javascript - 使用 Javascript 动态插入脚本

标签 javascript google-chrome-extension

长话短说,我正在开发 Google Chrome 扩展程序。默认情况下,扩展程序无法访问它们正在操作的页面范围内的变量(您需要通过 DOM 进行通信)。

我想做的是在页面中插入一个脚本;通过定义一个脚本标签和一个 src 属性可以很好地工作。

问题是这个脚本需要预先初始化一个变量。为了初始化这个变量,我试图用它的代码内联(而不是从外部源加载)构造一个脚本元素,但我无法让它工作。

这可能吗?如果可以,我该如何在脚本中定义源代码?我尝试将包含 JS 源代码的文本节点附加到脚本元素,但无济于事。

最佳答案

这很糟糕,但最好的方法可能是通过将数据注入(inject) DOM 来传达数据:http://code.google.com/chrome/extensions/content_scripts.html#host-page-communication

您也可以通过执行以下操作来完成此操作:

var script = document.createElement('script');
script.type = 'text/javascript';
script.text = 'alert("It works!");';
document.head.appendChild(script);

我还没有对此进行测试,但我猜它会在您的内容脚本中起作用。

关于javascript - 使用 Javascript 动态插入脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2323897/

相关文章:

google-chrome - Chrome 扩展程序 - 内联安装不起作用

javascript - 从注入(inject)的脚本中删除监听器

javascript - 新指令导致 ng-change 触发两次

javascript - chrome.alarms api 无法与 angularJS 正常工作

google-chrome - Chrome 扩展程序 - 事件页面在不到 20 秒后处于非事件状态

google-chrome-extension - 如何在 Chrome 扩展中使用谷歌创建登录

javascript - AngularJS 常量

javascript - 获取当前点击元素的 id 并获取子元素 id

javascript - 无法使用 ReactJS 读取未定义的属性 'filter'

javascript - 如何使用 Node.js 和 Express 从 Twitter API 迭代 client.get