我正在开发一个Chrome扩展程序,该程序可从主页上提取URL列表,循环浏览URL,在新窗口/标签中显示它们,并选择新页面上的按钮。我正在使用jQuery从主页和后续页面上的按钮中抓取URL列表。然后,我一次遍历一个URL,寻找一个按钮元素,以便可以单击它。页面加载正常,但是正在运行的内容脚本无权访问新的活动窗口/选项卡。仅主选项卡可访问。因此,正在运行的内容脚本找不到我要单击的按钮。该扩展包括popup.html,popup.js,content.js,background.js,background.html和manifest.json。清单包含选项卡,activeTab和网址列表的权限。清单中的内容脚本区域具有其访问的URL列表。
运行时,popup.html消失,但内容脚本通过URL运行,这些URL在新选项卡中显示每个URL,但“查找”按钮返回为“未定义”,因此click事件失败。关于为何内容脚本无法访问新选项卡的任何想法以及解决方法。
我已经排除了计时问题,因为等待页面加载并且它永远找不到按钮。
最近几天我在网上搜索过。无济于事。这可能是Google的安全问题。我尝试了不同的页面加载方法。我尝试在新窗口,新选项卡和主选项卡中加载页面。什么都没有。我已经开发了代码,可以通过弹出按钮手动执行每个步骤,并且代码可以正常工作。
//内容脚本片段:
//侦听器代码段:
if (msg.text === 'do_display') {
editList();
sendResponse({ count: 1, test_mode: 0 });
}
//编辑列表摘要:
function editList(){
var links = $("div.item-listing").find("a");
links.each((l) => console.log("href: " + links[l].href));
var count = links.length;
for (let i = 0; i < count; i++) {
LinksArray[i] = links[i].href;
}
work();
};
//工作功能代码:
function work() {
if (LinksArray.length === 0) return;
var url = LinksArray.shift();
console.log(url);
openWindow = window.open(url); //WINDOWS OPEN FINE
setTimeout(function () {
var edit = $("button.edit-listing");
console.log("get_edit: " + edit[0]); //FAILS TO FIND BUTTON "UNDEFINED'
getEdit();
}, 3000);
setTimeout(function () {
openWindow.close();
work();
}, 30000);
}
正在运行的内容脚本应找到按钮,但失败。脚本似乎并不专注于新标签。