功能未定义创建Chrome扩展内容脚本

时间:2011-03-02 01:43:04

标签: google-chrome-extension

我正在编写Chrome内容脚本,当我在DOM中注入它时:

"<a href='#' onclick='alert(\"Hi!\");return false;'>Hi</a>"

它工作正常(当我点击它时会弹出警报),但是如果我为警报创建一个函数,它会说函数未定义。例如:

"<a href='#' onclick='alertPlease(\"Hi!\");return false;'>Hi</a>"

function alertPlease(x){
     alert(x);
}

我的所有代码都是相同的内容脚本js文件。

在后台加载另一个js文件后,是否必须放置可以使用的代码?我尝试添加一个带有'alertPlease();的后台页面功能,但这也不起作用。

任何提示都将不胜感激! 谢谢!

2 个答案:

答案 0 :(得分:10)

内容脚本以“isolated world”运行。网页和内容脚本无法看到彼此的JavaScript变量(尽管它们可以看到相同的DOM)。在DOM中添加onclick属性时,处理程序是在网页的世界中创建的,而不是扩展的世界,因此代码可以不能访问您定义的其他功能。您应该在纯Javascript中定义事件侦听器,然后使用onclick附加它,而不是使用addEventListener处理程序。

孤立世界是提高安全性和稳定性的一项功能。如果您在Greasemonkey sandbox in Firefox内进行开发,情况就会相似。

答案 1 :(得分:-1)

在“content_scripts”

下的manifest.json文件中指定任何脚本
{
  "name": "My Extension",
  "content_scripts": [{
    "matches": ["<all_urls>"],
    "css": ["style.css"],
    "js": ["jquery-1.5.js", "script.js"]
  }]
}