即使点击链接,我也不会制作一个会保留其实例的用户脚本。
为了使脚本实例(即变量等)保持不变,我需要在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。这可能吗?
答案 0 :(得分:0)
也许您可以获取document.head.outerHTML和document.body.outerHTML的内容,将它们组合成一个字符串,base64对其进行编码,然后使用结果构建一个dataURL,然后将其设置为iframe的src。
虽然我可以看到递归将这个想法变成了一种效果,类似于将一个摄像机指向一个屏幕显示它的外观。
有趣的问题。书签的。