【发布时间】:2012-05-16 04:36:07
【问题描述】:
我正在尝试使用用户脚本更改页面中的变量。 我知道在源代码中有一个变量
var smilies = false;
理论上我应该可以这样改:
unsafeWindow.smilies = true;
但它不起作用。当我尝试在不劫持的情况下向控制台发出警报或将变量记录到控制台时,我发现它是未定义的。
alert(unsafeWindow.smilies); // undefined !!!
编辑:如果 Chrome 有任何改变,我将使用它...
http://code.google.com/chrome/extensions/content_scripts.html 说:
内容脚本在称为隔离的特殊环境中执行 世界。他们可以访问他们被注入的页面的 DOM, 但不适用于页面创建的任何 JavaScript 变量或函数。 它查看每个内容脚本就好像没有其他 JavaScript 在它正在运行的页面上执行。
这是关于 Chrome 扩展的,但我想用户脚本也是一样的故事?
谢谢你,Rob W。所以需要它的人的工作代码:
var scriptText = "smilies = true;";
var rwscript = document.createElement("script");
rwscript.type = "text/javascript";
rwscript.textContent = scriptText;
document.documentElement.appendChild(rwscript);
rwscript.parentNode.removeChild(rwscript);
【问题讨论】:
-
smilies不是在函数内部声明的变量? -
不,它不在函数内部。
-
对于更长的函数,使用自执行格式
scriptText = '('+ fn +')();';,其中fn是扩展中的任何(可能很长)函数。
标签: javascript google-chrome userscripts content-script