javascript - 获得响应后如何刷新加载 iFrame 的页面
问题描述
我有一个名为 default.aspx 的 C# 页面,我从中打开 iFrame。一旦我得到响应,我就会在我的会话中设置值。但由于缺乏页面刷新,我无法获得页面上显示的值并隐藏 iframe。
我使用了许多可能的 Js 函数:
window.parent.location = document.referrer location.top.reload
我希望在收到 iframe 的响应后刷新我的页面
解决方案
您可以使用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;博士:
window.postMessage() 方法可以安全地启用 Window 对象之间的跨域通信;例如,在页面和它生成的弹出窗口之间,或者在页面和嵌入其中的 iframe 之间。
通常,当且仅当它们源自的页面共享相同的协议、端口号和主机(也称为“同源策略”)时,才允许不同页面上的脚本相互访问。window.postMessage() 提供了一种受控机制来安全地规避此限制(如果使用得当)。
广义上讲,一个窗口可以获得对另一个窗口的引用(例如,通过 targetWindow = window.opener),然后使用 targetWindow.postMessage() 在其上调度 MessageEvent。然后接收窗口可以根据需要自由处理此事件。传递给 window.postMessage() 的参数(即“消息”)通过事件对象暴露给接收窗口。
推荐阅读
- batch-file - 批处理文件 - 对同一文件夹中的所有文件执行命令时排除某些文件类型
- excel - 通过更改 Cell.Font.Bold 来排队宏
- mysql - 如何从 ASP.NET Core 3.1 MySql.Data.EntityFrameworkCore 调用 MySQL 存储过程
- ruby - 如何将参数传递给mutant-rspec?
- c# - C# 9.0 记录 - 未继承 ToString
- python - Flask 中的请求表为空
- php - PHP提取文档中与搜索词相关的最重要的部分
- c# - 为什么 EF Core 一对多关系集合返回 null?
- html - PayPal 付款后加载微调器
- awk - for 循环将变量传递给 awk cmd