4

根据我的要求,我需要创建一个 Google Chrome 扩展程序,在单个 chrome 窗口的不同选项卡中单击即可打开多个链接 (25+)。该代码在 Chrome 18 之前运行良好。现在,我使用的是 chrome 24,该代码停止工作。我只是将所有链接存储在一个数组中并使用 for 循环打开它们,如下所示:

  for(var i = 0; i<links.length; i++)
  {
    var tablink = links[i];
    if(links[i] != "")
    {
            tablink = *"somedomain"* + tablink;
        setTimeout(window.open(tablink), 500);  
    }
  }  

结果,只有两个链接在选项卡中打开,其余链接将在不同的 chrome 窗口中打开。我应该怎么做才能克服这个?

编辑#1

在我的清单文件中

"content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "js": ["script.js", "jquery.js", "dialog.js"]
    }
  ],


"permissions": [
    "tabs", "http://*/*", "https://*/*"
  ],

首先给出的代码在 dialog.js 中

4

3 回答 3

1

这似乎是 JavaScript 中的常见错误。 setTimeout(window.open(tablink), 500);表示调用 window.open 500 毫秒后返回的内容。window.open 的返回值通常是一个 Window 对象,这会使 setTimeout 失败并且您的代码停止执行。这就是导致问题的原因。请setTimeout(function(){window.open(tablink)}, 500);改用。

于 2012-11-21T07:28:25.573 回答
-1

我试图同时打开多个网站,

发现“该页面上的弹出窗口被阻止”

你可以在地址栏中看到。

:)

于 2012-11-20T07:19:28.133 回答
-2

找到解决方案,打 n 块试石 :)

我刚刚删除了 setTimeout 函数,它可以工作。我仍然不明白为什么它会导致问题。

for(var i = 0; i<links.length; i++)
  {
    var tablink = links[i];
    if(links[i] != "")
    {
            tablink = *"somedomain"* + tablink;
        window.open(tablink);  
    }
  }  
于 2012-11-20T11:09:46.263 回答