Chrome扩展程序:启动时停止加载页面

6

当我单击扩展图标时,我希望能停止页面加载。我有一个后台页面,需要类似于window.stop()的选项来停止页面加载。如果主页面仍处于加载状态,则停止加载并加载扩展程序的内容。JavaScript应该正常工作。


如果Xan的解决方案不起作用,请尝试使用chrome.tabs.update(tab.id, {url:'javascript:void window.stop();'}) - Rob W
1个回答

4
您可以始终执行此操作(需要主机权限或 activeTab):
chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(tab.id, {
        code: "window.stop();",
        runAt: "document_start"
    });
});

我不确定manifest定义的内容脚本会发生什么情况。可能使用除document_start以外的run_at定义的脚本将不会被注入;在这种情况下,您可以使用executeScript的回调来注入它们,并在内容脚本中放置一些防护代码来防止其执行两次:

// content.js
if(contentInjected) return;
var contentInjected = true;

/* rest of the code */

不,代码chrome.tabs.executeScript(tab.id, {code: "window.stop"}); 不起作用。在这里,执行脚本不会影响重新加载选项卡。 - abhilash
我在chrome.browserAction.onClicked.addListener(function(tab) {}中有一个$.ajax()。 - abhilash
别忘了在 window.stop 后面加上 () ;) - Rob W
@RobW 和可能是 run_at.. 现在无法编辑,你能修复吗? - Xan
@RobW 我没有内容脚本。background.js 上的 window.stop() 不起作用。 - abhilash
1
@abhilash 此答案顶部的代码应从后台页面运行。然后单击按钮停止页面加载。如果不适用于框架,请尝试添加“allFrames:true”。 - Rob W

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接