更新后重新注入内容脚本

Trunal bhanse

我有一个chrome扩展程序,可以将iframe插入每个打开的标签页。我的background.js中有一个chrome.runtime.onInstalled侦听器,该侦听器手动注入所需的脚本,如下所示(API的详细信息位于:http : //developer.chrome.com/extensions/runtime.html#event-onInstalled):

background.js

  var injectIframeInAllTabs = function(){
    console.log("reinject content scripts into all tabs");
    var manifest = chrome.app.getDetails();
    chrome.windows.getAll({},function(windows){
      for( var win in windows ){
        chrome.tabs.getAllInWindow(win.id, function reloadTabs(tabs) {
          for (var i in tabs) {
            var scripts = manifest.content_scripts[0].js;
            console.log("content scripts ", scripts);
            var k = 0, s = scripts.length;
            for( ; k < s; k++ ) {
              chrome.tabs.executeScript(tabs[i].id, {
                file: scripts[k]
              });
            }

          }
        });
      }
    });
  };

当我第一次安装扩展程序时,这工作正常。扩展程序更新后,我也想这样做。如果在更新时也运行相同的脚本,则看不到新的iframe插入。不仅如此,如果我尝试在更新后将消息发送到我的内容脚本,则所有消息都不会传递到内容脚本。我已经看到其他人也在SO上遇到了同样的问题(Chrome:runtime.onInstalled上的message content-script)。chrome扩展程序更新后,删除旧内容脚本并注入新内容脚本的正确方法是什么?

Trunal bhanse

扩展程序更新后,Chrome会自动切断所有“旧”内容脚本与后台页面的对话,并且如果旧内容脚本确实尝试与运行时进行通信,它们也会引发异常。这是我所缺少的。chrome.runtime.onInstalledbg.js我所做的就是调用与问题中发布的方法相同的方法。这会注入另一个与正确的运行时进行对话的iframe。在某个时间点,旧的内容脚本会尝试与运行时进行通信,该运行时将失败。我发现了该异常,只是清除了旧的内容脚本。另请注意,每个iframe都注入了自己的“孤立世界”(此处介绍了孤立世界:http//www.youtube.com/watch?v = laLudeUmXHM),因此新注入的iframe无法清除旧的iframe。

希望这对以后的人有所帮助!

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

(可选)注入内容脚本

来自分类Dev

动态地注入内容脚本 - Chrome扩展程序

来自分类Dev

注入内容的JavaScript函数

来自分类Dev

角度trustAsHtml不重新插入内容

来自分类Dev

使用manifest.json,当URL匹配URL中任意位置的单个单词时,注入内容脚本

来自分类Dev

AJAX 内容加载多个脚本后需要重新加载

来自分类Dev

键入内容后,如何更改焦点?

来自分类Dev

内容更新后,重新对齐左参差的SWT TableEditor

来自分类Dev

制作一个简单的Firefox扩展-注入内容

来自分类Dev

从chrome扩展的内容脚本动态注入jQuery后,为什么不能使用jQuery?

来自分类Dev

在shell脚本中的匹配模式之间插入内容

来自分类Dev

输入内容未提交更改后的表格

来自分类Dev

动态插入内容后左右col的高度相同

来自分类Dev

几秒钟后输入内容消失

来自分类Dev

输入内容未提交更改后的表格

来自分类Dev

chrome.runtime.sendMessage在重新加载Chrome扩展程序后从内容脚本抛出异常

来自分类Dev

更新Google Apps脚本侧栏中的内容,而无需重新加载侧栏

来自分类Dev

Webpack和以编程方式注入的内容脚本

来自分类Dev

通过Grunt任务注入内容,具体取决于asp.net项目的构建配置

来自分类Dev

可以使用 dagger2 注入内容视图吗

来自分类Dev

使用子流程在python脚本中输入内容来调用python脚本

来自分类Dev

更新等级后重新排序

来自分类Dev

更新后重新启动

来自分类Dev

从内容脚本注入脚本。窗口对象不可用

来自分类Dev

获取当前活动的输入字段。Chrome内容脚本。脚本注入

来自分类Dev

获取当前活动的输入字段。Chrome内容脚本。脚本注入

来自分类Dev

输入内容的slice()

来自分类Dev

TinyMCE插入内容

来自分类Dev

webpack注入脚本后如何加载脚本标签?

Related 相关文章

  1. 1

    (可选)注入内容脚本

  2. 2

    动态地注入内容脚本 - Chrome扩展程序

  3. 3

    注入内容的JavaScript函数

  4. 4

    角度trustAsHtml不重新插入内容

  5. 5

    使用manifest.json,当URL匹配URL中任意位置的单个单词时,注入内容脚本

  6. 6

    AJAX 内容加载多个脚本后需要重新加载

  7. 7

    键入内容后,如何更改焦点?

  8. 8

    内容更新后,重新对齐左参差的SWT TableEditor

  9. 9

    制作一个简单的Firefox扩展-注入内容

  10. 10

    从chrome扩展的内容脚本动态注入jQuery后,为什么不能使用jQuery?

  11. 11

    在shell脚本中的匹配模式之间插入内容

  12. 12

    输入内容未提交更改后的表格

  13. 13

    动态插入内容后左右col的高度相同

  14. 14

    几秒钟后输入内容消失

  15. 15

    输入内容未提交更改后的表格

  16. 16

    chrome.runtime.sendMessage在重新加载Chrome扩展程序后从内容脚本抛出异常

  17. 17

    更新Google Apps脚本侧栏中的内容,而无需重新加载侧栏

  18. 18

    Webpack和以编程方式注入的内容脚本

  19. 19

    通过Grunt任务注入内容,具体取决于asp.net项目的构建配置

  20. 20

    可以使用 dagger2 注入内容视图吗

  21. 21

    使用子流程在python脚本中输入内容来调用python脚本

  22. 22

    更新等级后重新排序

  23. 23

    更新后重新启动

  24. 24

    从内容脚本注入脚本。窗口对象不可用

  25. 25

    获取当前活动的输入字段。Chrome内容脚本。脚本注入

  26. 26

    获取当前活动的输入字段。Chrome内容脚本。脚本注入

  27. 27

    输入内容的slice()

  28. 28

    TinyMCE插入内容

  29. 29

    webpack注入脚本后如何加载脚本标签?

热门标签

归档