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

piz*_*cks 3 google-chrome-extension

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

"<a href='#' onclick='alert(\"Hi!\");return false;'>Hi</a>"
Run Code Online (Sandbox Code Playgroud)

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

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

function alertPlease(x){
     alert(x);
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

yon*_*ran 10

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

孤立的世界是提高安全性和稳定性的一项功能.如果您在Firefox中Greasemonkey沙箱中进行开发,情况就会类似.