RadWindow newWindow = new RadWindow();
newWindow.NavigateUrl = "RegistrationSent.aspx";
newWindow.Top = Unit.Pixel(22);
newWindow.VisibleOnPageLoad = true;
newWindow.Left = Unit.Pixel(0);
RadWindowManager1.Windows.Add(newWindow);
when it runs, im getting a javascript error
Microsoft JScript runtime error: DOM Exception: INVALID_CHARACTER_ERR (5)
on this line
var _b4=($telerik.isIE)?document.createElement("<iframe name='"+_b3+"'>"):document.createElement("iframe");
im using Q1 2009 controls and IE9
14 Answers, 1 is accepted
This problem used to occur in an older version - from Q1 2011 we officially support IE9 and if you upgrade to it or a later version, everything will work fine.
Regards,Svetlina
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
Hi Mark,
The problem originates in the document.createElement() function. In prior IE versions you had to pass the whole HTML tag because of a bug with the name attribute. Under IE9 this bug is fixed, but the prior arguments cause an exception an you only need to pass the tag name. For example:
//Pre-IE9 code: document.createElement("<iframe name='" + name + "'>"); //IE9 code: document.createElement("iframe");You can override the function that creates the window to the current one and it will be displayed, but there are many different browser-specific issues that have been fixed in the latest release and they will persist.
Please note that if you upgrade you will need to remove this override in order to avoid a breaking change:
<script type="text/javascript"> var $T = Telerik.Web.UI; $T.RadWindow.prototype._createUI = function () { //Dynamic rendering of the window if (!this._popupElement) { var windowID = this.get_id(); var wrapperID = 'RadWindowWrapper_' + windowID; var isRightToLeft = this._isWindowRightToLeft(); var rootDiv = document.createElement('div'); rootDiv.id = wrapperID; rootDiv.className = this._getFullSkinName(); var cssClass = this.get_cssClass(); //get CssClass property value if (cssClass) Sys.UI.DomElement.addCssClass(rootDiv, cssClass); if (isRightToLeft) { Sys.UI.DomElement.addCssClass(rootDiv, "RadWindow_rtl"); } if (!this._visibleTitlebar) { Sys.UI.DomElement.addCssClass(rootDiv, 'rwNoTitleBar'); } rootDiv.style.width = this._width; rootDiv.style.height = this._height; rootDiv.setAttribute('unselectable', 'on'); this._popupElement = rootDiv; var tableElement = document.createElement('table'); tableElement.cellSpacing = 0; tableElement.cellPadding = 0; //set the size through additional CSSClass to prevent inheritance when content template is used Sys.UI.DomElement.addCssClass(tableElement, "rwTable"); this._tableElement = tableElement; //Create the table cells of the window var classNames = []; // In the case of direction=rtl, the cells of a table are automatically switched. That is why we need to switch the // order in whick we pass the cells to the ResizeExtender. if (isRightToLeft) { classNames = ["rwCorner rwTopRight", "rwTitlebar", "rwCorner rwTopLeft", "rwCorner rwBodyRight", "rwWindowContent", "rwCorner rwBodyLeft", "rwCorner rwBodyRight", "rwStatusbar", "rwCorner rwBodyLeft", "rwCorner rwFooterRight", "rwFooterCenter", "rwCorner rwFooterLeft"]; } else { classNames = ["rwCorner rwTopLeft", "rwTitlebar", "rwCorner rwTopRight", "rwCorner rwBodyLeft", "rwWindowContent", "rwCorner rwBodyRight", "rwCorner rwBodyLeft", "rwStatusbar", "rwCorner rwBodyRight", "rwCorner rwFooterLeft", "rwFooterCenter", "rwCorner rwFooterRight"]; } var rowClassNames = ["rwTitleRow", "rwContentRow", "rwStatusbarRow", "rwFooterRow"]; var index = 0; for (var i = 0; i < 4; i++) { var row = tableElement.insertRow(-1); row.className = rowClassNames[i]; for (var j = 1; j <= 3; j++) { var cell = row.insertCell(-1); cell.innerHTML = " "; //"<!-- / -->"; cell.className = classNames[index]; index++; } } //Append title element var titleCell = tableElement.rows[0].cells[1]; titleCell.innerHTML = ""; this._titleCell = titleCell; //Append the top resizer var topResizer = document.createElement('div'); topResizer.className = "rwTopResize"; topResizer.innerHTML = "<!-- / -->"; this._topResizer = topResizer; this._titleCell.appendChild(this._topResizer); //Titlebar element - holds all other elements in the rwTitlebar var titlebarTable = this._createDefaultTable(); titlebarTable.className = "rwTitlebarControls"; this._titlebarElement = titlebarTable; this._titleCell.appendChild(this._titlebarElement); //Follow 3 rwTitlebar elements - rwIcon(span), title (em), commandbuttons(ul)- the ul is created and maintained by set_behaviros method //Window Icon var windowIcon = this._getTitleIcon(); var iconCell = this._titlebarElement.rows[0].insertCell(-1); iconCell.appendChild(windowIcon); //Title text var titleElement = this._getTitleElement(); var titleCell = this._titlebarElement.rows[0].insertCell(-1); titleCell.appendChild(titleElement); this.set_title(this._title); //Set the behavior [including render available command buttons] var commandCell = this._titlebarElement.rows[0].insertCell(-1); //Setting nowrap would not work competely - the UL will still need to be sized commandCell.noWrap = true; commandCell.style.whiteSpace = "nowrap"; commandCell.appendChild(this._getTitleCommandButtonsHolder()); //this.set_behaviors(this._behaviors); //Configure content cell var contentCell = tableElement.rows[1].cells[1]; contentCell.vAlign = "top"; contentCell.innerHTML = ""; //Clear all existing content this._contentCell = contentCell; if (!(this._dockMode || this._isPredefined)) { //add additional CSSClass to fix problem with background for some skins, e.g Black when not dockMode Sys.UI.DomElement.addCssClass(this._contentCell, "rwExternalContent"); } if (this._enableShadow && !$telerik.isIE6) { //add additional CSSClass to show shadow if enabled this._setShadowCSSClass(true); } //Name should match the server ID property! It is needed so that default browser 'target' mechanism works! var name = this.get_name(); //Create rwStatusbar var stastusbarTable = this._createDefaultTable(); stastusbarTable.style.width = "100%"; this._statusCell = tableElement.rows[2].cells[1]; this._statusCell.innerHTML = ""; this._statusCell.appendChild(stastusbarTable); //Create rwStatusbar message cell and rwStatusbar resizer if (isRightToLeft) { this._createStatusbarResizer(stastusbarTable); this._createStatusbarMessageCell(stastusbarTable); } else { this._createStatusbarMessageCell(stastusbarTable); this._createStatusbarResizer(stastusbarTable); } //Add the wrapper table to the popup element this._popupElement.appendChild(this._tableElement); //Add popup to the document this._popupElement.style.display = 'none'; this._popupElement.style.position = 'absolute'; this._addWindowToDocument(); //Add rwTitlebar event handlers this._registerTitlebarHandlers(true); //Show/hide titlebars - it needs to be done here AND ins _show. Here - because a window can be shown with some animation. In _show - because the setting might be changed dynamically later using the API this.set_visibleTitlebar(this._visibleTitlebar); this.set_visibleStatusbar(this._visibleStatusbar); //if in dock mode, do not create the IFRAME at all (removing it later causes memmory leaks) //create a DIV element with the content instead and set it as a content element if (this._dockMode) { var contentElement = $get(this.get_id() + "_C"); if (contentElement && contentElement.innerHTML) { contentElement.style.overflow = "auto"; contentElement.style.border = "0px"; this.set_contentElement(contentElement); this.setWidthDockMode(this.get_width()); this.setHeightDockMode(this.get_height()); } } else { //Create content IFRAME. Due to a bug in IE regarding setting the name attribute, the following ugly code needs to be used var childFrame = ($telerik.isIE && !$telerik.isIE9) ? document.createElement("<iframe name='" + name + "'>") : document.createElement("iframe"); childFrame.name = name; childFrame.src = "javascript:'<html></html>';"; childFrame.style.width = "100%"; childFrame.style.height = "100%"; childFrame.style.border = "0px"; //set to 0 childFrame.frameBorder = "0"; //Only under IE8 it is necessary to set display = "block" for the IFRAME - otherwise it will not occupy 100% of its parent element if ($telerik.isIE8) { childFrame.style.display = "block"; } this._iframe = childFrame; this._contentCell.appendChild(this._iframe); } if (!this._dockMode) { //Create a back reference to parent RadWindow this._createBackReference(); } } this._updateOpacity(); //Create the popup if it has not been created if (!this._popupBehavior) { //Set behaviors (move, resize,etc etc) - do it here, so that the IFRAME is created and can be passed to be skipped //should be done only once! this.set_behaviors(this._behaviors); this._popupBehavior = $create(Telerik.Web.PopupBehavior, { 'id': (new Date() - 100)//set a unique id + 'PopupBehavior', 'parentElement': null, 'overlay': this._overlay, 'keepInScreenBounds': this._keepInScreenBounds }, null, null, this._popupElement); } }; </script>All the best,
Marin
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
I have the same problem and I copy your code to my user control and I got that error:
SCRIPT438: Object doesn't support property or method 'get_cssClass'
home.aspx, line 145 character 18
Thanks.
Levent KAYA
This override should be placed in the main page and should be at the end of the form to ensure it will override any other script the RadWindow will output. Therefore it should not be placed in a user control, as it usually renders somewhere in the middle of the page.
Without any more information on your exact setup and the version that you are using I am not sure what else might be causing this issue and, if you are unable to get it working after moving the code to the end of the form, I would advise that you open a support ticked and send us more detailed information on your configuration along with a simple project that isolates your issue.
Greetings,
Marin
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
As you noticed in your reply I have added your solution in my ascx and top of my codes. Now I understand my mistake.
I found another solution for the problem.
I added to my masterpages that code:
<meta http-equiv="X-UA-Compatible" content="IE=8"/>
It makes browser to render in IE 8 mode.
Also you can add an entry to web.config for entire application.
Thanks.
What can i do if with your override function
var childFrame = ($telerik.isIE && !$telerik.isIE9) ? Telerik.isIE9 is undefined
Thanks,
Urbano Machado
I see that the last version you have downloaded is Q2 2009. This is two years old now and many things have changed in the code. Please note that this override cannot work in all cases, as it depends on other pieces of code that are more recent than the version you are using. For such an old version the best approach is to upgrade to the latest (Q2 2011 SP1 at the time of writing). The second-best approach is to use the meta tag that invokes the compatibility mode, from the previous post.
Greetings,
Marin
the Telerik team
I had the same issue as João with IE9 being undefined, so I added a function at the beginning to get the version from the user agent string:
function isIE() {
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;
} Then I replaced that particular line with the following code:
var childFrame = ($telerik.isIE && !(isIE() == 9)) ? I did have to comment out a couple lines, but ultimately, it worked for my purposes!
Thanks to Martin for the override!
-Ted
i am opening radwindow from client side
i have rad grid in that radwindow
first time when i open my rad window grid is showing small in size and after closing that rad window i open second time grid showing full in rad window
i have attached image of first and second time
give me solution of that
Please have a look into the sample code snippet which works fine at my end. Please provide your code if it doesn't help.
ASPX:
<telerik:RadWindow ID="rwindowGridOrders" runat="server" Width="700px" Height="500px"> <ContentTemplate> <telerik:RadGrid ID="rgridOrders" runat="server" DataSourceID="sqldsOrders"> </telerik:RadGrid> </ContentTemplate></telerik:RadWindow><telerik:RadButton ID="rbtnOpenWindow" runat="server" Text="OpenWnindow" AutoPostBack="false" OnClientClicked="openWindow"></telerik:RadButton>JavaScript:
function openWindow(sender, args) { var window = $find("<%=rwindowGridOrders.ClientID%>"); window.show();}Thanks,
Shinu.
Please have a look into this forum thread which discuss about the same scenario.
Thanks,
Shinu.