我有一个名为default.aspx的C#页面,从中可以打开iFrame。得到响应后,我便在会话中设置了值。但是由于缺少页面刷新,我无法在页面上显示值并隐藏iframe。
我使用了许多可能的Js函数:
window.parent.location = document.referrer location.top.reload
我原本希望在收到Iframe的回复后刷新页面
答案 0 :(得分:0)
您可以使用window.postMessage
与iframe
的父级进行通信。
在您的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)