即使单击链接,我也不会创建一个将保留其实例的用户脚本。
为了使脚本实例(例如变量等)持久存在,我需要在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>
除非链接具有
target="_blank/_parent/_top"
链接,否则所有浏览 Activity 都应在内部iframe中进行,而父窗口不应刷新(这将导致脚本丢失所有变量)。一种方法是简单地使用与我的网站的网址相同的网址创建一个iframe:
var container = document.createElement("iframe");
container.src = window.location;
但是,这种方法将导致页面重新加载以及所有数据丢失(填写表格,滚动)。
因此,将
window
及其所有内容移至iframe。那可能吗?
最佳答案
也许您可以获取document.head.outerHTML和document.body.outerHTML的内容,将它们组合成一个字符串,对它进行base64编码,然后使用结果构造一个dataURL,然后将其设置为iframe的src。
尽管我可以看到递归将这个想法变成了一种类似于将摄像机指向显示出输出信号的屏幕的效果。
有趣的问题。已收藏。
关于javascript - 将窗口移至iframe,而无需重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20178077/