迫使iframe中的下一页加载爆发

时间:2014-07-09 06:17:47

标签: javascript html5 iframe firefox-addon

我有一个加载新标签页的iframe。点击缩略图虽然它在iframe中加载。我希望在window.top中加载iframe中的任何后续加载。如果不单独设置缩略图以使用target=_blank,这是否可行。因为如果用户删除缩略图,则会由另一个未设置此target属性的其他人填充。

我给了这个javascript和html5,因为相同的知识适用于突破框架。

如果没有针对此的javascript / html5解决方案,这些是我对选项的想法:

  • 向iframe添加unload个事件。但是在卸载事件对象中,我无法找到它要去的新网址
  • 使用http-on-modify-request观察者并在修改检查loadContext窗口是否为iframes contentWindow,如果是,则中止该请求并将其加载到window.top中,我认为这是过度杀伤对于应该如此简单的事情

1 个答案:

答案 0 :(得分:1)

  • 在整个文档或窗口中添加一个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; ?!
});

在控制台中对此进行了测试,似乎可以正常工作。