javascript - 页面加载后向内容脚本发送消息

标签 javascript google-chrome google-chrome-extension google-chrome-app

我正在尝试迭代 background.js 中的 URL 数组。对于每个 URL,我希望它导航当前选项卡,然后向 content_script.js 发送消息,告诉它执行操作。

问题是它是立即发送的,而不是在页面加载时发送(事实上,它甚至在更新 URL 之前就发送了)

背景.js:

  chrome.tabs.update(null, {
    url: 'https://www.example.com/' + path
  }, function(tab) {
    chrome.tabs.sendMessage(tab.id, {message: 'update_user'});
  });

content_script.js

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if (request.message === 'update_user') {
      console.log('loaded');
    }
  }
);

最佳答案

如果异步页面加载是您的问题,类似这样的内容可能会有所帮助:

chrome.tabs.update(null, {
        url: url
    }, function (tab) {
        chrome.tabs.onUpdated.addListener(function listener (tabId, info) {
            if (info.status === 'complete' && tabId === tab.id) {
                chrome.tabs.onUpdated.removeListener(listener);
                chrome.tabs.sendMessage(tab.id, {message: 'update_user'});
            }
        });
    });
});

这会为每个错误 URL 的 onUpdated 添加一个单独的监听器。每个监听器仅适用于显式打开的单个选项卡,因此不会出现“意外”。

加载选项卡后,监听器将被删除并发送消息。

关于javascript - 页面加载后向内容脚本发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51389227/

相关文章:

javascript - chrome 扩展打开 javascript 弹出窗口,然后该窗口中的警报失败

javascript - 在 Chrome 扩展的 iframe 中使用 Twitter Bootstrap JS

c# - 从 C# 应用程序调用 Javascript 文件

css - 为什么这个 textarea 不能在 Chrome 中假设其父级的全高?

javascript - Nodejs中如何处理异步事务

Javascript 范围怪异、函数和浏览器

javascript - 在 chrome.storage.local 中存储客户端生成的密码的安全隐患

javascript - 内容安全策略指令 : "script-src ' self' 'unsafe-eval' "

javascript - 更改 html 文本框的高度时,页面的其余部分变得拥挤

javascript - 带有固定标题的 HTML 表格?