愚蠢的js func undefined

时间:2011-05-26 20:02:21

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

我正在写一个chrome扩展,在我的background.html页面中,它正在使用此命令注入一个js文件:

chrome.tabs.executeScript(null, {file: "mod.js"});

此文件中的所有代码都在页面上正常运行,除了没有为onclick属性定义的一个函数。

我正在改变facebook主页的innerHTML,包含“头条新闻”和“最新”的div

我正在插入这个html:

"<a href='#' onclick='thisIsUndefined()'>
  <span class='someClass'>
    Better feed
  </span>
</a>"

在注入的js文件中,thisIsUndefined完美地表示为:

function thisIsUndefined () {
    alert("is it working yet?");
}

我甚至在我正在使用的文件中有另一个函数,但每当我点击插入的链接时,我得到一个错误,说它是未定义的。

确切错误:     未捕获的ReferenceError:未定义thisIsUndefined

以下是整个文件供参考:

http://texthmu.com/Devin/HMU%20ext/mod.js

你能否推荐可以修复定义的'global'或'var'这样的关键词?

3 个答案:

答案 0 :(得分:3)

页面上的脚本和内容脚本是隔离的。它们与相同的DOM交互,但不直接与彼此的变量交互。当您添加onclick时,它将在站点的脚本中查找该功能。最好的方法是使用document.createElement,然后使用onclickaddEventListener附加您的功能。如果您想要转到innerHTML路线,请先将其附加到DOM,然后找到并附加您的活动。

http://jsfiddle.net/EjYpQ/

答案 1 :(得分:2)

由于Chrome的执行模式,你有点看不出那个:

  

内容脚本以特殊方式执行   环境称为孤立的世界。   他们可以访问DOM的DOM   他们被注入的页面,但没有   任何JavaScript变量或   页面创建的功能。它   看起来像每个内容脚本   没有其他JavaScript执行   在它正在运行的页面上。相同   反之亦然: JavaScript正在运行   在页面上无法调用任何功能   或访问由...定义的任何变量   内容脚本。

(以粗体强调)

来源:http://code.google.com/chrome/extensions/content_scripts.html#execution-environment

答案 2 :(得分:0)

这是我找到的最佳解决方案:

$("#elementID").click(function() {
    myFunc();
});