Chrome Web Extension因“禁用开发人员模式扩展”而弹出,因此Chrome弹出窗口而停止

时间:2019-12-26 22:29:28

标签: javascript google-chrome-extension

我编写了一个Web扩展程序,该功能会在打开Chrome浏览器后自动浏览指定的网站(通过“收集”网站Cookie来模拟/培训用户个人资料)。

我知道您可以通过将弹出式窗口列入自己的Web扩展程序的白名单来禁用该弹出窗口:

Disable developer mode extensions pop up in Chrome

但是:我的Web扩展程序必须在没有GUI的Linux上的8至16个虚拟机上自动运行,我不知道是否可行以及如何执行。

“我的扩展程序”将按预期方式打开第一个URL,但随后弹出窗口开始起作用并停止进一步的浏览。如果我每手打开另一个选项卡,它将继续工作,但是通过Javascript打开选项卡并不能解决问题。我的代码通常不必处理多个选项卡,因为所有操作都由一个选项卡完成。也许我在错误的时间执行了代码。当弹出窗口不出现时,代码可以完美运行。

我的代码没有打开标签:

background.js

var shouldMessageBeSent = true;

chrome.windows.onCreated.addListener(function() {
  chrome.tabs.update({url:"https://stackoverflow.com/"}); // placeholder URL
});

chrome.webNavigation.onCompleted.addListener(function() {
  if (shouldMessageBeSent == true) {
    chrome.tabs.query({"currentWindow": true}, function(tabs) {
      shouldMessageBeSent = false;
      chrome.tabs.sendMessage(tabs[0].id, {txt: "newURLvisited"}, function(response) {});
    });
  } 
});


chrome.runtime.onMessage.addListener(gotMessage);

function gotMessage(message) {
  if (Array.isArray(message)) { // It's an array in my code
    linksToVisit = message;
  }
  visitLinks(linksToVisit); // visits all the given links (the links are filtered in my code)
}

Content.js(高度简化)

chrome.runtime.onMessage.addListener(gotMessage);

function gotMessage(message) {
  if (message.txt === "newURLvisited") {
    var allLinks = document.getElementsByTagName("a");
    chrome.runtime.sendMessage(allLinks);
  }
}

有什么主意要解决吗?它可能需要在激活窗口/选项卡焦点的情况下执行某些操作。

1 个答案:

答案 0 :(得分:0)

显然,您可以install a policy for Chrome(作为Google的模板提供),在此之前可以edit to your taste;我想您只需在JSON编辑器中就可以在Mac和Linux上做类似的事情。