全局变量Chrome扩展内容脚本

时间:2015-10-10 17:37:52

标签: javascript jquery google-chrome google-chrome-extension

我已经尝试到处寻找答案,所以请原谅我,如果它出现在某个地方,我无法找到它。

我正在编写一个简单的Chrome扩展程序,它在页面上放置按钮,用于更改该页面上输入项的值。

我的content.js文件的简化版本:

urlField = $('#someidonthepage');

function changeValue(){
    urlField.val('test');
}

当我在控制台中执行此代码时,它工作正常,我可以调用该函数。但是,使用我的扩展名,只有当我在函数内部声明urlField 时,它才有效。

如果不是因为我有一堆函数和变量,而且我觉得将所有10个函数和变量都声明为非常低效,这显然不是什么大问题。每个功能。

我尝试使用"窗口。"以及我在网上发现的有关全局变量的其他内容,但我开始认为这与Chrome Extensions有关,而不是错误的语法,因为它在控制台中运行良好。

我几乎只是开始编程,所以请告诉我是否还有其他信息我可以提供!

提前致谢!

1 个答案:

答案 0 :(得分:1)

显而易见的原因是,网页在加载后会重新创建元素。

因此,当注入内容脚本时初始化全局变量时,它包含undefined值(如果元素不存在)或元素的过时版本,稍后将重新创建。

另一方面,当您从事件处理程序访问元素时,会选择实际存在的元素。

最简单的解决方案是避免使用全局变量。

否则请看一下: