我想在单击扩展程序图标时停止页面加载。我有一个背景页面,当我单击扩展图标时,我需要一个类似于 window.stop() 的选项。如果主页仍处于加载状态,请停止加载并加载扩展的内容 JavaScript 应该可以工作。
activeTab
):
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(tab.id, {
code: "window.stop();",
runAt: "document_start"
});
});
我不确定清单定义的内容脚本会发生什么。使用
run_at
而非 document_start
定义的脚本可能不会被注入;在这种情况下,您可以使用 executeScript
的回调在任何情况下注入它们,并在内容脚本中放入一些保护代码以防止其执行两次:
// content.js
if(contentInjected) return;
var contentInjected = true;
/* rest of the code */
从清单版本 3 开始,您需要使用
scripting
。这需要权限 ["scripting", "tabs"]
并且当前 URL 必须允许 host_permissions
。
function stopLoading(tab) {
console.debug('Stopping loading of tab ' + tab.id);
chrome.scripting.executeScript({
target: {tabId: tab.id},
func: function() {
window.stop();
}
});
}
chrome.action.onClicked.addListener(() => {
chrome.tabs.query({ active: true, currentWindow: true })
.then(tabs => stopLoading(tabs[0]));
});