我正在浏览一堆元素,并希望添加一个链接,该链接将运行一小段JavaScript。我这样做是Chrome扩展程序中的内容脚本。功能do_something
与my_func
在同一文件中定义,并且是Chrome扩展程序的一部分。
my_func
看起来像这样:
function my_func() {
$(".matching_class").each(function() {
$(this).html('<a href="javascript:do_something();">foo</a>');
});
}
问题是,当我点击闪亮的链接时,我明白了:
未捕获的ReferenceError:
do_something
未定义
如何从do_something
引用my_func
?
答案 0 :(得分:1)
将函数绑定到超链接的click事件而不是注入对javascript的调用可能是更好的做法:my_func();
这些方面的东西(未经测试):
$(".matching_class").each(function() {
$this.bind('click', do_something);
});
或使用匿名函数:
$(".matching_class").each(function() {
$this.bind('click', function() {
//do_somethintg code
});
});
答案 1 :(得分:0)
尝试在do_something
之前放置my_func
。
可能是因为你调用do_something时可能找不到my_func,因为它是在my_func之后定义的。
作为 JavaScript引擎是解释器,它解释JavaScript源代码并相应地执行脚本。