用于更新特定选项卡弹出窗口的内容脚本

时间:2015-10-13 23:38:42

标签: javascript jquery google-chrome google-chrome-extension tabs

让我们有一个虚构的扩展,它可以在' /'来自url,在内容脚本中完成。还会更新popup.html中的徽章和更改文本,这对于每个标签(不同的标签,差异。网址)都是不同的

contentscript.js:

var str = document.URL;
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);
chrome.runtime.sendMessage({message: "result", url: result});

eventpage.js:

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if (request.message == "result") {
        chrome.browserAction.setBadgeText({tabId:sender.tab.id, "text" : "1"});      
      links = request.url;
        }

popup.js:

$(function () {
    var bg = chrome.extension.getBackgroundPage();
    $('#total').text(bg.links);
});

popup.html

<!DOCTYPE html>
<html>
    <head>
        <title>Plugin</title>
        <script type="text/javascript" src="jquery-1.11.3.js"></script>
        <script type="text/javascript" src="popup.js"></script>
    </head>
    <body>
        <div id='total'>Nothing</div>
    </body>
</html>

这仅适用于新加载的标签,而不是我在它们之间点击时。例如,当我加载第一页&#34; webpage.com/first"我的弹出窗口是第一个&#39;。当我加载第二页(在不同的选项卡上)&#34; webpage.com/second"弹出窗口是第二个&#39;。之后我点击第一页(在第一个标签页上),我的弹出窗口是第二个&#39;我打算成为第一个&#39;。

//我的项目中的徽章是反击的,我在这里写的只是为了获得一个想法

1 个答案:

答案 0 :(得分:1)

如果您只需要获取标签网址,只需在popup.js中使用chrome.tabs.query即可完成内容脚本:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    $('#total').text(tabs[0].url.replace(/^.+?\/([^\/]*)$/, '$1'));
});

否则在popup.js中使用chrome.tabs.executeScript

chrome.tabs.executeScript({
    code: "document.querySelector('p.something').textContent"
}, function(results) {
    $('#something').text(results[0]);
});

这两种方法都需要manifest.json中的"activeTab" permission