chrome 扩展:启动时停止加载页面

问题描述 投票:0回答:2

我想在单击扩展程序图标时停止页面加载。我有一个背景页面,当我单击扩展图标时,我需要一个类似于 window.stop() 的选项。如果主页仍处于加载状态,请停止加载并加载扩展的内容 JavaScript 应该可以工作。

javascript google-chrome-extension
2个回答
4
投票

您始终可以执行此操作(需要主机权限或

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 */

0
投票

从清单版本 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]));
});

© www.soinside.com 2019 - 2024. All rights reserved.