在Chrome扩展程序中使用onClick

IT人

我有一个chrome扩展名content_scripts当页面加载时,我会将新元素附加到DOM使用jquery:

urlTarget.parent().prepend("<div class='scout status' onClick='test()' data-domain='" + domainKey + "'></div>");

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

function test() {
    alert("this is test");
    return false;
}

单击附加元素后,出现以下错误:

Uncaught ReferenceError: test is not defined

我一直在阅读有关chrome扩展框架中的安全限制的信息(请参阅docs),但是我不确定它们是否也适用于内容脚本(文档显示了弹出示例),还是我错过了elese的内容?

海原爱

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

因此,这里有两种解决方法:

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

    // Assuming the id is ID
    document.getElementById('ID').addEventListener('click', test);
    
  2. script在页面中添加标签(使用内容脚本在页面上下文中插入代码

    var actualCode = `
      function test() {
        alert("this is test");
        return false;
      }
    `;
    
     var script = document.createElement('script');
     script.textContent = actualCode;
     (document.head||document.documentElement).appendChild(script);
     script.remove();
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Chrome扩展程序中使用onClick在页面上添加按钮的正确方法

来自分类Dev

在Chrome扩展程序中使用Facebook SDK

来自分类Dev

AngularJS在Chrome扩展程序中使用eval

来自分类Dev

在Chrome扩展程序中使用细分IO

来自分类Dev

在Chrome扩展程序中使用Google图表

来自分类Dev

在Chrome扩展程序中使用Chrome文本语音转换

来自分类Dev

在Chrome扩展程序中使用Chrome文本语音转换

来自分类Dev

在Chrome扩展程序弹出窗口中使用jQuery

来自分类Dev

可以在Chrome扩展程序中使用ES6吗?

来自分类Dev

在Chrome扩展程序中使用聚合物元素

来自分类Dev

Javascript无法在Google Chrome扩展程序中使用

来自分类Dev

无法在Google Chrome扩展程序中使用jQuery

来自分类Dev

如何在Selenium中使用Google Chrome扩展程序?

来自分类Dev

Javascript无法在Google Chrome扩展程序中使用

来自分类Dev

在Chrome扩展程序中使用UDP套接字

来自分类Dev

您可以在 Chrome 扩展程序中使用 TinyMCE 命令吗?

来自分类Dev

使用DevTools的Chrome扩展程序

来自分类Dev

如何在Chrome扩展程序中使用Require.JS时启动chrome.runtime.on

来自分类Dev

如何使用Chrome扩展程序接收来自网页onClick事件的消息?

来自分类Dev

使用onClick处理程序扩展ListPreference

来自分类Dev

有效的JavaScript API域,可在Chrome扩展程序中使用linkedIn

来自分类Dev

从chrome打包的应用(或扩展名)中使用默认文件处理程序启动本地文件

来自分类Dev

在Chrome扩展程序中使用时,提取API不会发送会话Cookie

来自分类Dev

在Chrome扩展程序的覆盖的新标签中使用jQuery是否违反了内容安全政策?

来自分类Dev

如何在Chrome扩展程序中使用AJAX发出POST请求?

来自分类Dev

在Chrome扩展程序中使用Google Calendar API插入事件不断失败

来自分类Dev

在Chrome扩展程序中使用PAC文件重定向HTTPS请求似乎失败

来自分类Dev

无法在Chrome扩展程序中使用postMessage从父窗口将数据发送到iframe

来自分类Dev

window.MathJax在Firefox中未定义,可在Chrome扩展程序中使用

Related 相关文章

  1. 1

    在Chrome扩展程序中使用onClick在页面上添加按钮的正确方法

  2. 2

    在Chrome扩展程序中使用Facebook SDK

  3. 3

    AngularJS在Chrome扩展程序中使用eval

  4. 4

    在Chrome扩展程序中使用细分IO

  5. 5

    在Chrome扩展程序中使用Google图表

  6. 6

    在Chrome扩展程序中使用Chrome文本语音转换

  7. 7

    在Chrome扩展程序中使用Chrome文本语音转换

  8. 8

    在Chrome扩展程序弹出窗口中使用jQuery

  9. 9

    可以在Chrome扩展程序中使用ES6吗?

  10. 10

    在Chrome扩展程序中使用聚合物元素

  11. 11

    Javascript无法在Google Chrome扩展程序中使用

  12. 12

    无法在Google Chrome扩展程序中使用jQuery

  13. 13

    如何在Selenium中使用Google Chrome扩展程序?

  14. 14

    Javascript无法在Google Chrome扩展程序中使用

  15. 15

    在Chrome扩展程序中使用UDP套接字

  16. 16

    您可以在 Chrome 扩展程序中使用 TinyMCE 命令吗?

  17. 17

    使用DevTools的Chrome扩展程序

  18. 18

    如何在Chrome扩展程序中使用Require.JS时启动chrome.runtime.on

  19. 19

    如何使用Chrome扩展程序接收来自网页onClick事件的消息?

  20. 20

    使用onClick处理程序扩展ListPreference

  21. 21

    有效的JavaScript API域,可在Chrome扩展程序中使用linkedIn

  22. 22

    从chrome打包的应用(或扩展名)中使用默认文件处理程序启动本地文件

  23. 23

    在Chrome扩展程序中使用时,提取API不会发送会话Cookie

  24. 24

    在Chrome扩展程序的覆盖的新标签中使用jQuery是否违反了内容安全政策?

  25. 25

    如何在Chrome扩展程序中使用AJAX发出POST请求?

  26. 26

    在Chrome扩展程序中使用Google Calendar API插入事件不断失败

  27. 27

    在Chrome扩展程序中使用PAC文件重定向HTTPS请求似乎失败

  28. 28

    无法在Chrome扩展程序中使用postMessage从父窗口将数据发送到iframe

  29. 29

    window.MathJax在Firefox中未定义,可在Chrome扩展程序中使用

热门标签

归档