Safari扩展-更改预定义Javascript变量值

Safari扩展-更改预定义Javascript变量值,javascript,google-chrome-extension,scope,safari-extension,Javascript,Google Chrome Extension,Scope,Safari Extension,因此,我试图实现的是从一个网站操纵一个javascript变量,这样当我加载页面时,它会更改为我预先确定的值(inmyscript.js) 在Safari的扩展生成器中,我有以下设置: 访问级别:全部(以确保其当前运行正常) 开始脚本:jquery.min.js(jquery脚本) 结束Scriptps:myscript.js(myscript) 启动脚本将加载jquery脚本,因为我想使用jquery进行一些DOM操作。 结束脚本是一个脚本,它包含我试图在html文档中更改的变量的覆盖 当

因此,我试图实现的是从一个网站操纵一个javascript变量,这样当我加载页面时,它会更改为我预先确定的值(inmyscript.js)

在Safari的扩展生成器中,我有以下设置:

  • 访问级别:全部(以确保其当前运行正常)
  • 开始脚本:jquery.min.js(jquery脚本)
  • 结束Scriptps:myscript.js(myscript)
启动脚本将加载jquery脚本,因为我想使用jquery进行一些DOM操作。 结束脚本是一个脚本,它包含我试图在html文档中更改的变量的覆盖

当前myscript.js看起来像:

$(document).ready(function(){
    var numberImThinkingOf = 999;
});
举一个我正在尝试做的例子:下一页,通过每次按下submit按钮时创建一个新的段落元素,打印出numberImThinkingOf的值

因此,如果没有扩展,它将打印出来

  • 价值:5
  • 价值:5
  • 价值:5
如果按三次

但是,我希望我的Safari扩展在加载所有DOM元素后将numberiThinkingof变量的默认值更改为myscript.js中指定的值,以便在我按下submit按钮时,它将输出:

  • 数值:999
理想情况下,我不想操纵DOM,使其插入另一个脚本元素。我最初认为javascript将变量附加到窗口对象。但我想我错了。事件,如果我有脚本,如

$(document).ready(function(){
    alert(numberImThinkingOf)
});
它返回未定义的:)如有任何帮助,我将不胜感激

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script>
    var numberImThinkingOf = 5;
    function whatNumber(){
        var newElement = document.createElement("p");
        newElement.textContent = "Value: "+numberImThinkingOf;
        document.body.insertBefore(newElement, document.body.firstChild);
    }
    </script>
</head>

<body>
<input type="submit" value="Continue &rarr;" onclick="whatNumber()" />
</body>
</html>

var NumberimingOf=5;
函数whatNumber(){
var newElement=document.createElement(“p”);
newElement.textContent=“Value:”+numberImThinkingOf;
document.body.insertBefore(新元素,document.body.firstChild);
}

我相信您的脚本和页面会获得不同的
窗口对象,以避免意外污染。下面是说明:

注入脚本有一个隐含的名称空间,您不必担心变量或函数名与网站作者的名称冲突,网站作者也不能调用扩展中的函数。换句话说,注入脚本和包含在网页中的脚本在孤立的世界中运行,互不访问对方的函数信息或数据


听起来您需要以某种方式将此变量附加到DOM,可能是作为标记的属性。

内容脚本是沙盒的,如果您想访问父页面变量,您必须在代码中插入
标记。您可以找到一些示例。

为什么要将jQuery作为开始脚本加载?没有理由这样做也就是说,开始脚本实际上只适用于需要中断资源加载的脚本。只需将其作为第一个结束脚本加载即可。