繁体   English   中英

如何在关闭rad窗口时刷新父页面

[英]How to refresh the parent page on closing the rad window

我使用下面给出的Java脚本代码打开了一个rad窗口。 现在,我想在关闭rad窗口时刷新我的父页面。 为了实现这一点,我已经将onSendInviteClose一个jquery方法与onclose事件链接在一起。 现在,这段代码刷新了我的父页面,但是有一段时间它给了我错误消息,描述为“无法从释放的脚本中执行代码”。 如何解决此问题或关闭时重新加载我的父页面(任何其他方式)。

谢谢

var e_showaddresslist = function (sender, args) {
    var url = $page.url.create("Pages/CalendarInvites.aspx?parentScreen=sendInviteWnd");
    var win = $window.createPopup(url,
    {
        size: "750, 500", behaviors: Telerik.Web.UI.WindowBehaviors.Close | Telerik.Web.UI.WindowBehaviors.Maximize | Telerik.Web.UI.WindowBehaviors.Move | Telerik.Web.UI.WindowBehaviors.Reload | Telerik.Web.UI.WindowBehaviors.Modal, name: "sendInviteWnd", onclose: onSendInviteClose
    },
    function () {
        //$page.get_window().set_destroyOnClose(true);
    });
  }

function onSendInviteClose() {
        window.location.reload(true);
}

注意:所有代码都放在calendar.js文件中,该文件在父页面和radwindow页面中都有引用。

阅读此内容会导致错误“无法从释放的脚本执行代码”的原因

尝试/捕获解决方案可能会对您有所帮助。

您可以将OnClientColose挂接到RadWindow并使用document.location.reload()刷新页面。

function RefreshParentPage()//function in parent page
{
document.location.reload();
}

谢谢,
莎丽莎

确保在正确的上下文中(即在主页中而不是在CalendarInvites页面中)执行代码。

然后,如果可以,请尝试添加以下超时:

function onSendInviteClose() {
 setTimeout(function() {
       window.location.reload(true);
}, 0); //you can also try increasing the timeout.
}

通常,无法从释放的脚本中执行代码意味着正在处理的内容页面仍在尝试运行某些代码,但仍处于孤立状态(例如,其所依赖的其他代码段已被处理,或者其上下文已消失-窗口宾语)。 通常,这是iframe中的页面(即RadWindow内部),但也可能是您的主页。

在关闭事件上附加了“ onSendInviteClose”方法。

 var win = $window.createPopup(url,
    {
        size: "750, 500", behaviors: Telerik.Web.UI.WindowBehaviors.Close |Telerik.Web.UI.WindowBehaviors.Move,  onclose: onSendInviteClose
    }

现在,在打开弹出窗口的页面中创建该方法。 关闭弹出窗口时,将自动触发此功能。

function onSendInviteClose() {
    //get a reference to the current RadWindow
    var wndow = GetRadWindow();
    wndow .Close();
    // and as this method is present in parent page
    // we can refresh the page controls easily.
}

function GetRadWindow() {
    var oWindow = null;
    if (window.radWindow) oWindow = window.radWindow;
    else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
    return oWindow;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM