我想更新ID上的标签。这很有效。在它之后,我想设置标签的标题。以下代码无效。短时间内会显示标题,但随后会被更新后的网站覆盖......
chrome.tabs.update(globalData.bbId, {url: 'MYURL'}, function (){
chrome.tabs.executeScript(globalData.bbId, {code: 'document.title = "Test"'});
});
可以轻松设置标题吗?
感谢
答案 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 Eventlet tabUpdateHandler = (tabId, {url: updatedUrl, status}, tab) => {
if (updatedUrl && status = 'completed') {
// set your new title here
}
}
chrome.tabs.onUpdated.addListener(tabUpdateHandler);
这两个选项都可以正确设置您的标题。 快乐的编码。