在Chrome扩展程序中,运行内容脚本无法访问新窗口/标签

时间:2019-04-11 23:33:36

标签: javascript jquery google-chrome-extension

我正在开发一个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);
            }

正在运行的内容脚本应找到按钮,但失败。脚本似乎并不专注于新标签。

0 个答案:

没有答案