在标签和标题

时间:2018-01-09 11:13:36

标签: google-chrome-extension

我想更新ID上的标签。这很有效。在它之后,我想设置标签的标题。以下代码无效。短时间内会显示标题,但随后会被更新后的网站覆盖......

    chrome.tabs.update(globalData.bbId, {url: 'MYURL'}, function (){
    chrome.tabs.executeScript(globalData.bbId, {code: 'document.title = "Test"'});
    });

可以轻松设置标题吗?

感谢

1 个答案:

答案 0 :(得分:0)

Chrome的更新标签API回调是在新网址开始加载时调用的,而不是在加载完成时调用,您也可以在回调中检查它。

//基本查询。

chrome.tabs.query({active: true}, (tabs) => {
    chrome.tabs.update(tabs[0].id, {url: 'http://facebook.com'}, (tab) => { 
        console.log(tab.status); // loading
    })
})

“加载”状态“完成”状态在网址完全加载时出现,这就是你的标题被覆盖的地方。并且你没有回调来完成状态。

因此,您可以通过以下选项完成工作: -

选项1 - 使用setTimeout()并设置您认为重新加载时的预期时间。我在这里设置为3秒。

chrome.tabs.query({active: true}, (tabs) => {
    chrome.tabs.update(tabs[0].id, {url: 'http://facebook.com'}, (tab) => { 
        setTimeout(() => { chrome.tabs.executeScript(tab.id, {code: "document.title = 'New Title'"}) }, 3000);
    })
})

选项2 - 您可以像

一样收听Tab Updated Event
let tabUpdateHandler = (tabId, {url: updatedUrl, status}, tab) => {
    if (updatedUrl && status = 'completed') {
        // set your new title here
    }
}

chrome.tabs.onUpdated.addListener(tabUpdateHandler);

这两个选项都可以正确设置您的标题。 快乐的编码。