javascript - 从事件页面更改选项卡的 DOM

标签 javascript google-chrome dom google-chrome-extension

我有一个事件页面,其中我设置了一些监听器来查找用户何时更改当前选项卡中的 URL,使用:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    myFunction(tab);
});

现在,我想使用 myFunction 更改选项卡 DOM 的某些部分。 我测试了一下,似乎我当前正在更改的 DOM,它与选项卡的不一样,该用户已更改。

我对此有点陌生,我不知道是否必须使用内容脚本

谢谢!

最佳答案

如果您询问如何更改选项卡的 DOM,我会使用内容脚本。然后,如果需要,可以使用 postMessage 在事件页面和内容脚本之间进行通信,但事件页面可能会消失,因此这可能不是可靠的 channel 。

这来自Google Code documentation :

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(null,
                           {code:"document.body.bgColor='red'"});
});

如果您询问如何获取当前选项卡,获取当前选项卡可能会因上下文而异。以下是最近对我有用的方法。

在浏览器操作的 popup.html 中,我有:

  chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
      var current;
      if (_.isEmpty(tabs)) {
        return;
      }
      current = tabs[0];
   });

在 chrome-extention://中我使用:

   chrome.tabs.getCurrent(function(tab) {
   });

关于javascript - 从事件页面更改选项卡的 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18928386/

相关文章:

javascript - imacros 如何在运行完 javascript 函数后播放另一个 javascript 文件

javascript - 如何每隔 n 秒更改 Canvas 上圆圈的颜色?

javascript - 有没有一种简单的方法可以使嵌套数组变平?

javascript - 如果表单提交按钮被禁用 onclick,则表单不会在 chrome 中提交

javascript - 我们如何在谷歌浏览器的每一页上打印表格标题

javascript - 为什么 jquery 不返回 DOM 的最后一个条目?

javascript - 为什么使用 .html() 会破坏这个 Replace 表达式?

macos - Catalina 上的本地主机 chrome

javascript - 无法选择 <nav> 标签内的链接并应用 javascript

javascript - 是新创建的元素,它不是 DOM 样式的一部分,还是所有值都设置为默认值?