根据我的要求,我需要创建一个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
中答案 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)
我试图同时打开多个网站,
发现“该页面上的弹出窗口已被屏蔽”
你可以在地址栏中看到。
:)