【问题标题】:Chrome Extension -- Running executeScript in multiple new tabs at the same timeChrome 扩展——同时在多个新标签页中运行 executeScript
【发布时间】:2016-09-21 19:20:24
【问题描述】:

我正在构建一个带有搜索表单的 popup.html 的 Chrome 扩展程序。与 Travelocity 或 Kayak 一样,该表单包含复选框,因此用户可以选择他们想要查询的站点。

提交时,popup.js 会根据选中的复选框启动多个新选项卡。在每个新选项卡的 tabs.create() 回调中,我使用 executeScript 来: - (A) 将用户的查询注入每个新页面的搜索表单中,并且 - (B) 在这些页面上提交搜索表单。

My code is working when one checkbox is selected (i.e. new tab is launched), but when multiple new tabs are created simultaneously it appears that the executeScript isn't running consistently.有时有效,有时无效。

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

如果您有任何想法,我很想听听您的建议。

另外,如果您有任何关于如何在未来调试此类问题的资源,我将不胜感激。

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

非常感谢!

【问题讨论】:

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

标签: google-chrome google-chrome-extension


【解决方案1】:

好像当您打开多个选项卡时 - 您的 popup.html 失去焦点并关闭,因此注入您的代码的 tabs.create 回调将不会被执行。

尝试使用“active:false”选项创建选项卡,如下所示:

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

我认为它会对你有所帮助。

还有…… 这是您的 SeSac 注入代码中的一个错误:如果在弹出窗口中没有定义搜索类型,则阻止

input[value="undefined"]

将找不到,因此“未定义”将调用“已检查”属性,这将阻止您注入脚本执行。

【讨论】:

  • 太棒了——谢谢!这正是问题所在!关于“未定义”搜索类型问题,输入验证是我要实现的下一个功能。再次感谢。 :)
  • 很高兴为您提供帮助!祝你好运! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
相关资源
最近更新 更多