2

我有以下书签,可以打开 SMF 论坛的“未读主题”页面中显示的所有帖子(原件是单行):

javascript:(function(){
  var topics = new Array();
  var links = document.getElementsByTagName('a');
  for (var i = 0; i < links.length; i++) {
    if (links[i].href.indexOf('#new') != -1)
      topics.push(links[i].href);
  }
  for (var i = 0; i < topics.length; i++) {
    window.open(topics[i]);
  }
})();

它曾经工作正常:我打开带有链接的页面,单击书签,所有主题都将在新标签中打开。

在上次 Chrome 更新(我当前的版本是 22.0.1229.79 m,Windows 7 x64)之后,情况发生了变化。当我单击它时,第一个主题会在新选项卡中打开,但其他主题会在弹出窗口中打开(我必须第一次授权它们)。

我的问题是:

  1. 如何解决此问题并恢复旧行为?
  2. 是什么导致了这种变化?
4

2 回答 2

0

试试这个 hack 作为解决方法。为我工作。

javascript:(function(){
  var topics = new Array();
  var links = document.getElementsByTagName('a');
  for (var i = 0; i < links.length; i++) {
    if (links[i].href.indexOf('#new') != -1)
      topics.push(links[i].href);
  }
  for (var i = 0; i < topics.length; i++) {
    setTimeout(function(){ window.open(topics[i]) }, 500); // ADDED setTimeout
  }
})();

您可能需要修改 Chrome 的弹出框设置。如果 chrome 阻止弹出窗口,URL 栏的右上角会出现一个小图标。

您也可以直接在此处编辑它们:chrome://chrome/settings/contentExceptions#popups

我能够以这种方式打开至少 30 个选项卡,但似乎可以通过这种方式打开的选项卡数量受到限制。玩弄超时可能会有所帮助。或者您可以打开 30 个,然后再次单击以再打开 30 个,等等 - 显然,只需对代码进行少量更改。“30”只是一个例子。尝试找到一个最佳数字。

值得注意的是,当我修改弹出窗口阻止程序设置并使用没有 setTimeout 的代码时,发生的情况是打开了 2 个选项卡,然后打开了大量新窗口。我认为这是错误。在这种情况下,我看不出有任何可能的理由从选项卡更改为窗口。

于 2012-10-11T12:53:57.663 回答
0

在后台打开一个新标签?可能会有所帮助:那里的答案建议使用document.createEvent然后initMouseEvent模拟 ctrl-click - 或 OS X 上的 meta-click。

于 2012-09-30T19:21:14.930 回答