2016-09-21 45 views
1

我正在构建一个带有搜索表单的popup.html的Chrome扩展程序。与Travelocity或Kayak类似,表单中包含复选框,用户可以选择要查询的网站。Chrome扩展程序 - 同时在多个新标签页中运行executeScript

提交后,popup.js将根据所选复选框启动多个新选项卡。在每个新选项卡的tabs.create()回调中,我使用executeScript来执行以下操作: (A)将用户的查询插入到每个新页面的搜索表单中,并且(B)在这些页面上提交搜索表单。

当一个复选框被选中时(即新标签被启动),我的代码正在工作,但是当同时创建多个新标签时,看起来executeScript并不一致地运行。有时它起作用,有时它不起作用。

这使我相信脚本执行的时间存在某种问题,但我不确定。

如果您有任何想法发生了什么,我很乐意听取您的建议。

此外,我很感激任何资源在如何调试这种问题在未来。

这是我在GitHub上的代码...

非常感谢!

+0

对不起,我应该问一个关于调试的更具体的问题 - 我熟悉devtools,但在这种情况下,我还没有找到一种方法来添加一个断点到刚打开的标签。我将如何调试由executeScript插入的代码?另外,你提到直接URL W /搜索参数。我查询的两个网站没有支持此功能的网址结构。我想你可以在我的代码中看到,我尽可能使用直接URL。谢谢你的帮助! :) – rossmorey

回答

2

似乎当你打开多个选项卡 - popup.html失去焦点并关闭,所以在tabs.create回调注入您的代码将不会执行。

尝试创建标签“活动:假”选项,如:

chrome.tabs.create({url: stringToObj[org], active:false} ... 

我认为这将帮助你。

而且还... 它在你的SESAC注入代码中的错误:如果在弹出的窗口中没有定义搜索类型,阻止

input[value="undefined"] 

不会被发现,所以“选中”属性将被称为在“未定义”,这将阻止你注入脚本执行。

+0

辉煌 - 谢谢!这正是问题所在!关于“未定义”的搜索类型问题,输入验证是我的下一个要实现的功能。再次感谢。 :) – rossmorey

+0

很高兴帮助你!祝你好运! :) – MobDev

相关问题