我有两个页面,父母和我正在使用的这个页面:
window.open('OrderDetailsFull.aspx?ObjectID=' + ObjectID[1] , "TableDetails","status=0 , toolbar=0 , location=no , menubar=0 , scrollbars=yes , height=600px , width=800px");
打开一个新窗口并在那里操作数据。
当我完成我正在做的事情时,我需要刷新父页面,这样我就可以获得新的数据...
据我所知,方法是:
top.opener.location.reload(true);
但出于某种原因,它无法在IE8或IE9中运行......
我正在构建一个应用程序,而不是一般的网页。它将适用于带有IE的Windows操作系统(目前它仍然是最常见的系统......无关紧要)所以我真的需要解决这个问题....
我在网上找不到任何针对这个问题的新解决方案,每个人都说它应该像那样......
有没有人遇到过这个问题?并且有人知道如何解决它吗?
好的,关注问题:我做opener.location.reload(true);
时是否重新呈现父页面(听起来如此)?如果它确实那么我就是一个大问题,如果没有,那么必须有办法做到这一点......
问题是我在父页面中有一个ajax调用,并且由于某些原因它在我使用它时仍保留在它的旧值中,只有当我重新加载子窗口时,父ajax显示真实结果,一些代码如下...
这是在opener页面的文档就绪jQuery函数中:
$('div[id^="divTable"]').hover(
function(e){
//קבלת זהות השולחן הנלחץ
ObjectID = $(this).attr('id').split('_');
$(this).css("cursor","pointer");
//AJAX הבאת נתוני רשומת ההזמנה מהשרת ב
var OrderDetails = $.ajax({
url:'AjaxActions/OrderDetails.aspx?ObjectID=' + ObjectID[1],
async:false
}).responseText;
//צף מעל שולחן כשעומדים עליו, ניתן לראות את פרטי הרשומה של אותו השולחן DIV
$(this).append($('<div style="position: absolute; top: 0; left: -150;">' + OrderDetails + '</div>'));
//וידוא שהשולחן עליו אנו עומדים יהיה העליון
$(this).css("z-index","10");
$(this).siblings().css("z-index","1");
},
//כשיוצאים מהשולחן DIVהעלמת ה
function () {
$(this).find('div:last').remove()
}
);
这是子窗口中应该刷新开启者的一个函数:
$('#ctrl_Print').click(
function()
{
alert($('#hidItem').val());
var Items = new Array();
Items = $('#hidItem').val().split(',');
for(var i=0;i<Items.length;i++)
{
alert(Items[i]);
}
opener.location.reload(true);
window.location = 'OrderDetailsFull.aspx?OrderID=' + OrderID + '&ObjectID=' + ObjectID + '&Print=' + Items;
window.close();
}
);
... 10倍
答案 0 :(得分:2)
看起来IE 8和9在刷新开启者时有安全限制。
答案 1 :(得分:1)
如果要访问父窗口(或框架),则应使用parent
,而不是top
:
parent.location.reload(true);
如果您的网页是该窗口内的框架,请向其添加更多parent
:
parent.parent.location.reload(true);
答案 2 :(得分:1)
top
用于在处理框架集和/或iframe时获取当前物理窗口中的最外层文档,并且与window.open
无关,因此您不应该这样做除非您的弹出页面中有框架或iframe,否则请使用top
。以下是:
opener.location.reload(true);
答案 3 :(得分:1)
我遇到过这个问题,其中reload()在Chrome中运行,但在IE浏览器中呕吐。
尝试使用window.location.replace(此处为url和params)。
你必须为replace()收集url和params,但它会解决IE错误消息。
示例:
在Joomla 2.5中,父窗口为用户输入启动模态,我们需要重新加载父窗口(视图)以运行使用模态输入的代码。
模态在父窗口中触发一个函数,如;
function updateAddresses(runUpdate, itemID, closeModal){
if(closeModal == true ){
SqueezeBox.close();
}
if(runUpdate == true){
//location.reload();
var replaceURL = 'index.php?option=com_poecom&view=cart&ItemId='+itemID;
window.location.replace(replaceURL);
}
}