Google chrome extension 在chrome扩展中使用onClick

Google chrome extension 在chrome扩展中使用onClick,google-chrome-extension,Google Chrome Extension,我有一个带有内容\u脚本的chrome扩展。加载页面时,我使用jquery将新元素添加到DOM: urlTarget.parent().prepend(“”) 这个很好用。我还在我的inject.js内容脚本中定义了一个函数: function test() { alert("this is test"); return false; } 单击“附加元素”后,出现以下错误: 未捕获引用错误:未定义测试 我一直在阅读chrome extension framework中的安全限制

我有一个带有
内容\u脚本的chrome扩展。加载页面时,我使用jquery将新元素添加到
DOM

urlTarget.parent().prepend(“”)

这个很好用。我还在我的
inject.js
内容脚本中定义了一个函数:

function test() {
    alert("this is test");
    return false;
}
单击“附加元素”后,出现以下错误:

未捕获引用错误:未定义测试


我一直在阅读chrome extension framework中的安全限制(请参阅),但我不确定它们是否也应用于内容脚本(文档显示了弹出窗口示例),或者当您通过
onClick=XXX
将新元素附加到DOM并注册事件侦听器时,我是否遗漏了一些元素,实际上,浏览器希望
XXX
来自页面脚本。但是,您知道,他们不能直接访问页面创建的变量/函数,反之亦然

因此,这里有两个解决办法:

  • 为插入的元素添加
    id
    ,并通过以下方式在内容脚本中绑定事件侦听器

    // Assuming the id is ID
    document.getElementById('ID').addEventListener('click', test);
    
  • 脚本
    标记追加到页面()


  • 当您将新元素附加到DOM并通过
    onClick=XXX
    注册事件侦听器时,实际上浏览器希望
    XXX
    来自页面脚本。但是,您知道,他们不能直接访问页面创建的变量/函数,反之亦然

    因此,这里有两个解决办法:

  • 为插入的元素添加
    id
    ,并通过以下方式在内容脚本中绑定事件侦听器

    // Assuming the id is ID
    document.getElementById('ID').addEventListener('click', test);
    
  • 脚本
    标记追加到页面()


  • 谢谢,这解释了脚本行为。实际上,我的目的是从注入脚本内部动态调用函数。通过动态方式,我的意思是当处理包含数据属性值和要调用的函数名的附加元素时,我将能够“从字符串”调用此函数。除了单击
    onClick
    之外,我还尝试了
    eval()。实际上,我的目的是从注入脚本内部动态调用函数。通过动态方式,我的意思是当处理包含数据属性值和要调用的函数名的附加元素时,我将能够“从字符串”调用此函数。我也尝试了
    eval()
    ,但效果是一样的。