在新标签页中打开javascript链接

时间:2013-05-07 16:24:35

标签: html google-chrome browser tabs

Question1question2question3了解如何强制用户在新标签中打开链接 但在我的情况下,我定期访问一些网站,他们有这样的链接:

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

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

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

2 个答案:

答案 0 :(得分:1)

。 。问题是这些链接可能有点“约:空白”,因为它们没有在href属性中正常指定,所以当使用ctrl + 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”链接不变。

答案 1 :(得分: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/