window.open无法打开两个以上的链接

时间:2012-11-20 06:45:19

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

根据我的要求,我需要创建一个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);  
    }
  }  

因此,只有两个链接在标签中打开,其余的将在不同的镀铬窗口中打开。我该怎么做才能克服这个问题?

编辑#1

在我的清单文件中

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


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

首先给出的代码在dialog.js

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

得到解决方案,点击n试验岩石:)

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

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

答案 2 :(得分:-3)

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

发现“该页面上的弹出窗口已被屏蔽”

你可以在地址栏中看到。

:)