我编写了一个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);
}
}
有什么主意要解决吗?它可能需要在激活窗口/选项卡焦点的情况下执行某些操作。
答案 0 :(得分:0)
显然,您可以install a policy for Chrome(作为Google的模板提供),在此之前可以edit to your taste;我想您只需在JSON编辑器中就可以在Mac和Linux上做类似的事情。