将窗口移动到iframe而不重新加载

时间:2013-11-24 18:17:45

标签: javascript dom iframe

即使点击链接,我也不会制作一个会保留其实例的用户脚本。

为了使脚本实例(即变量等)保持不变,我需要在iframe中使用页面,这是运行脚本的窗口的子项。而且,父母文档的位置必须与内部文档位置相同 - 否则我会遇到相同原始策略的问题。

那就是说,我不想这样做:

<html>
  <head>
    ...
  </head>
  <body>
     ...page contents...
  </body>
</html>

进入这个:

<html>
  <head>
    ...here is my userscript running...

  </head>
  <body>
     <iframe style="width: 100%; height: 100%">
        ...move the whole original window here...

     </iframe>
  </body>
</html>

Unles链接有target="_blank/_parent/_top"所有浏览活动都应该在内部iframe中进行,而父窗口不会刷新(这会导致脚本丢失所有变量)。

这样做的一种方法就是创建一个iframe,其网址与我网站的网址相同:

var container = document.createElement("iframe");
container.src = window.location;

但是,这种方法会导致页面重新加载以及丢失所有数据(填写表单,滚动)。

所以将window及其所有内容移动到iframe。这可能吗?

1 个答案:

答案 0 :(得分:0)

也许您可以获取document.head.outerHTML和document.body.outerHTML的内容,将它们组合成一个字符串,base64对其进行编码,然后使用结果构建一个dataURL,然后将其设置为iframe的src。

虽然我可以看到递归将这个想法变成了一种效果,类似于将一个摄像机指向一个屏幕显示它的外观。

有趣的问题。书签的。