Chrome扩展程序在每个标签更改时获取当前域

时间:2014-09-02 13:52:17

标签: javascript google-chrome dns location

我正在尝试获取当前域,并在Chrome扩展程序的每个标签更改时提醒它。例如,每当用户导航另一个页面时,它将alert("your current path is: " + location.hostname);但它不起作用。我做错了什么?我试过这段代码:

chrome.tabs.onUpdated.addListener(
    alert(location.hostname);
);

2 个答案:

答案 0 :(得分:1)

这不起作用,因为后台页面的location.hostname是chrome://扩展程序网址。

添加

"permissions": [
    "tabs"
]

然后将您的代码更改为:

chrome.tabs.onUpdated.addListener(function(){
    chrome.tabs.getSelected(null,function(tab) {//get current tab without any selectors
        alert(tab.url);  //get tab value 'url'
    });
});

答案 1 :(得分:0)

将主机名请求发送到内容脚本

在background.js中

User.update(
  { _id: Mongoose.Types.ObjectId(userId), 'projects.name': data.project },
  { $push: { 'projects.$.tasks': data.task } },
  (err, data) => {
    if (err) { throw err; }

    return reply('success');
  }
);
ContentScript.js中的

// record active tab id when user switch tab every time
// activeTabId is global variable
var activeTabId = undefined;
chrome.tabs.onActivated.addListener(
    function(activeInfo){
        activeTabId = activeInfo.tabId;
    }
);

// send hostname request to content script when user update active tab
chrome.tabs.onUpdated.addListener(
    function(changeInfo,tab){
        // check if the updating tab is active tab
        if(tab.id === activeTabId){
            // send hostname request
            chrome.tabs.sendMessage(activeTabId,{alertHostName:true});
        }
    }
);