【问题标题】:Why does my Google Chrome extension only open 25 tabs out of many more?为什么我的 Google Chrome 扩展程序只能打开更多标签中的 25 个?
【发布时间】:2012-02-19 05:57:18
【问题描述】:

我这里有一段代码不想作为 Chrome 扩展程序正常工作。

据我所知,一切正常,除了它停止打开选项卡 25 附近的页面,无论应该打开多少个选项卡。我检查了代码,它试图正确打开每个链接,但实际上并没有。有什么想法吗?

for (x = 0; x<55; x++){
   window.open();
}

【问题讨论】:

  • 你将不得不进一步分解它。初始的.each() 循环是否被调用了适当的次数?您的代码具体在哪里失败? openedTabs 的值是否总是如预期的那样完整?如果它确实在 window.open() 上失败了,我怀疑你正在达到 Chrome 施加的某种安全/安全限制。
  • 最初的 '.each' 循环只被调用一次,为它找到的整个页面上的每个 url 激活。 'openedTabs' 的值总是正确的。而且我不知道任何安全限制,但我真的很想绕过它,哈哈
  • 对不起,我的意思是该循环中的代码运行了多少次,但如果openedTabs 是正确的,那就回答了这个问题。只是为了好玩,如果你有一个非常简单的循环,除了打开 50 个窗口什么都不做,它会在 23 个左右停止吗?总是23吗?你试过把sleep放在那里吗?
  • 我尝试了 sleep 命令,但没有成功,它实际上是 25 个窗口。我现在就试试这个脚本。
  • @Wyko,我无法确认,但在我看来,这听起来确实像,"Google_Bob:嘿,乔,我们应该限制这一点。有人想要的最大窗口数是多少要打开?Google_Joe:哦,我想 25 就可以了!” 有点问题。

标签: javascript google-chrome google-chrome-extension


【解决方案1】:

intentional upper bound 有 25 个 window.open 呼叫。有关背景,请参阅 Chromium 错误 26323382,但简而言之,其想法是防止无限期打开弹出窗口的页面的拒绝服务(UI 和内存)攻击。

chrome.tabs.create 之类的扩展 API(正如 PAEz 的回答所暗示的那样)不受这些 API 的约束,因为扩展已经是特权访问。

【讨论】:

    【解决方案2】:

    可能与弹出窗口阻止程序或布拉德所说的有关。
    它很容易处理,只需使用 tabs api....

    for (x = 0; x<55; x++){
       chrome.tabs.create({url:"nowhere"+x});
    }
    

    ...55 个小标签 ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多