1

我正在开发谷歌浏览器扩展应用程序。我想,一旦用户在浏览器选项卡上的 http 请求完成,它就会发出一些警报。意味着当浏览器完成它的请求时,应用程序可以监听它。

现在我正在使用下面的代码。它在请求完成后读取标签 url。

chrome.webRequest.onCompleted.addListener(function() {
    var mydiv = document.createElement('div');  
        chrome.tabs.getSelected(null,function(tab) {
        mydiv.innerHTML = tab.url;      
    });         
    document.body.appendChild(mydiv);
});

但这对我不起作用。有什么帮助吗?

4

1 回答 1

1

您可能正在从后台页面运行代码(否则chrome.webRequest API将不可用。从那里(后台页面)无法与网页 DOM 交互。

你可以像这样实现你想要的:

解决方案 A

  1. 在"document_end" 或 "document_idle"内容脚本注入网页。

  2. 内容脚本(一旦注入)将创建您的div并将其添加到 DOM。

解决方案 B

  1. 让您的背景页面监听页面加载。顺便说一句,chrome.tabs.onUpdated可能更适合这项任务。例如:

    chrome.tabs.onUpdated.addListener(function(tabId, info, tab) {  
        if (info.status && (info.status == "完成")) {
            // 页面已加载,因此注入内容脚本
        }
    });
    
  2. 在页面加载时以编程方式注入内容脚本。

  3. 内容脚本(一旦注入)将创建您的div并将其添加到 DOM。

于 2013-11-01T10:56:11.480 回答