我有一个加载新标签页的 iframe。单击缩略图虽然它会加载到该 iframe 中。我希望 iframe 中的任何后续加载都加载到 window.top
中。如果不单独设置缩略图以使用 target=_blank
是否可行?因为如果用户删除一个缩略图,它会被另一个没有此 target
属性集的缩略图填充。
我给出了这个 javascript 和 html5,因为相同的知识适用于打破框架。
如果没有 javascript/html5 解决方案,这些是我对选项的想法:
- 向 iframe 添加一个
unload
事件。但是在卸载事件对象中我找不到它要访问的新 url - 使用
http-on-modify-request
观察器并在修改时检查loadContext
窗口是否为 iframe contentWindow,如果是则中止该请求并将其加载到window.top
,我只是认为这对于应该如此简单的事情来说有点过分了
最佳答案
- 添加一个
click
整个文档或窗口的事件监听器。 - 然后当调用事件监听器时,检查目标。
- 您可能需要遍历
.parentElement
树,直到找到<a>
. - 如果成功
.preventDefault()
事件。 - 然后,随心所欲(tm)。
例子:
addEventListener("click", function(e) {
let target = e.target;
while (target && !target.href) {
// Find the parent <a>, if any
target = target.parentElement;
}
if (!target) {
// Nothing found;
return;
}
e.preventDefault();
alert(target.href);
// window.top.location = target.href; ?!
});
在控制台中对此进行了测试,它似乎有效。
关于javascript - 强制 iframe 中的下一页加载中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24646573/