1

Question1question2question3看起来如何强制用户在新标签中打开链接)
但在我的情况下,我经常访问一些网站,他们有这样的链接:

<a href='javascript:window.open("/view.php?id=1234","_self")'>Link name</a>

这种类型的链接使我无法通过鼠标单击在新选项卡中打开链接。每次看到这些链接时,我都会在 Chrome 中复制标签并单击克隆标签内的链接。并返回原始选项卡并继续冲浪。是否可以使用 chrome 扩展、js 代码或其他东西在新选项卡中打开这些链接?

您可以尝试此处的链接之一:http: //bit.ly/12dUk4V

4

2 回答 2

1

. . 问题是这些链接可能有点像“about:blank”,因为它们通常没有在href属性中指定,所以在使用 ctrl+click、middle click 或类似的东西时会破坏您的预期行为。有时网站链接到“javascript:”伪协议,有时链接是“#”,带有“onclick”触发器......这取决于具体情况。

. . 对于这种特定情况,如果您愿意使用Tampermonkey 之类的东西,编写一个重写此类链接的用户脚本很容易:

// ==UserScript==
// @name       SelfLinks Fixer
// @namespace  http://dnun.es./
// @version    0.1
// @description  This script rewrites "window.open(..., '_self')" links so that you can click them as you wish.
// @match      http://libgen.info/*
// @copyright  2013, http://dnun.es.
// ==/UserScript==

var tRegExp = '^javascript: *'+
  '(window\\.)?open\\('+
  ' *(([\'"])([^\\3]+)\\3) *,'+
  ' *[\'"]_self[\'"] *'+
  '\\) *;? *$';
var fixLinksCheck = new RegExp(tRegExp);
var as = document.getElementsByTagName('a'), i = 0, n = as.length, a;
for (;i<n;i++) { a = as[i];
  if (fixLinksCheck.test(a.href)) { //damn you _self link!
    a.href = a.href.replace(fixLinksCheck, '$4');
  }
}

. . 此代码通过将“ _self ”链接更改为普通链接来“修复”它们。然后,您可以使用中间按钮单击它们,按住 ctrl/shift 或其他任何东西。它还保持“_blank”或“_top”链接不变。

于 2013-05-07T16:31:07.847 回答
1

是的,有可能。您所需要的只是在每个页面中注入一行简单的 JavaScript 代码。我以前在 Firefox 扩展中做过。

您只需要覆盖 window.open 方法:

var open_= window.open;         

window.open = function(url, name, opts) {
   if (name === '_self') { name = '_blank'; }
   open_(url, '_blank', opts);
};

JsFiddle 上的完整代码:http: //jsfiddle.net/dp4Uz/

于 2013-05-07T16:56:53.947 回答