得到响应后如何刷新加载iFrame的页面

时间:2019-06-11 06:32:50

标签: javascript c# iframe extjs

我有一个名为default.aspx的C#页面,从中可以打开iFrame。得到响应后,我便在会话中设置了值。但是由于缺少页面刷新,我无法在页面上显示值并隐藏iframe。

我使用了许多可能的Js函数:

window.parent.location = document.referrer location.top.reload

我原本希望在收到Iframe的回复后刷新页面

2 个答案:

答案 0 :(得分:0)

您可以使用window.postMessageiframe的父级进行通信。

在您的iframe中:

window.parent.postMessage("loaded");

在您的父母aspx内:

window.addEventListener("loaded", receiveMessage, false);

function receiveMessage(event) {
   // do reload
   window.location.reload();
}

您可以在MDN中了解有关此API的更多信息。

TL; DR:

  

window.postMessage()方法安全地启用跨域   Window对象之间的通信;例如,在页面和   产生的弹出窗口,或在页面和嵌入的iframe之间的弹出窗口   在里面。

     

通常,允许不同页面上的脚本相互访问   当且仅当它们源自的页面共享相同的协议时,   端口号和主机(也称为“同源策略”)。   window.postMessage()提供了一种受控机制来安全地   规避此限制(如果使用得当)。

     

一般来说,一个窗口可以获取对另一个窗口的引用(例如,通过   targetWindow = window.opener),然后在其上调度MessageEvent   与targetWindow.postMessage()一起使用。接收窗口随即可以   根据需要处理此事件。传递给   window.postMessage()(即“消息”)暴露给   通过事件对象接收窗口。

答案 1 :(得分:0)

只是一个简单的想法...您不能使用ajax来获取值并仅刷新特定的div标签。

如果您确实要刷新页面..您可以尝试诸如document.location.reload(true)

相关问题