我想制作一个用户脚本,即使我点击链接也能保持其实例。
为了使脚本实例(如变量等)持久化,我需要在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>
除非链接中有target="_blank/_parent/_top"
,否则所有浏览活动都应在内部iframe中进行,同时父窗口不应刷新(这将导致脚本丢失所有变量)。
一种方法是简单地创建一个与我的站点URL相同的iframe:
var container = document.createElement("iframe");
container.src = window.location;
然而,这种方法会导致页面刷新以及所有数据的丢失(包括填写的表单和滚动条位置)。
因此,将window
及其内容移动到一个iframe中。这是否可行?