Как обновить родительскую страницу при закрытии окна rad
У меня есть открытое окно rad, используя приведенный ниже код java-script. Теперь я хочу обновить родительскую страницу при закрытии окна rad. Чтобы достичь этого, я связал метод jquery OnSendInviteClose с событием 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.
4 ответа
Прикрепленный метод 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;
}
Прочитайте это Что вызывает ошибку "Не удается выполнить код из освобожденного скрипта"
Решение try / catch может помочь в вашем случае.
Убедитесь, что код выполняется в правильном контексте, т.е. на главной странице, а не на странице CalendarInvites.
Затем, если это нормально, попробуйте добавить время ожидания следующим образом:
function onSendInviteClose() {
setTimeout(function() {
window.location.reload(true);
}, 0); //you can also try increasing the timeout.
}
Обычно невозможность выполнения кода из освобожденного сценария означает, что размещаемая страница содержимого все еще пытается выполнить какой-то код, но она является потерянной (например, другие части кода, от которых она зависит, удалены, или ее контекст пропущен - окно объект). Чаще всего это будет страница в iframe (т. Е. Внутри RadWindow), но это также может быть ваша главная страница.
Вы можете подключить OnClientColose к RadWindow и обновить страницу, используя document.location.reload().
function RefreshParentPage()//function in parent page
{
document.location.reload();
}
Спасибо,
Сарита