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 + クリック、中クリックなどを使用すると、期待される動作が損なわれます。"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 に答える