リンクが機能しない

リンクが機能しない

[1] リンクをクリックすると、target=_blankIE11 は期待されるタブではなく、新しい空白のタブを開きます。これは Chrome[2] では問題なく動作しますが、IE8 では動作せず、現在は IE 11 でも動作します。

この問題を解決するために、ブラウザの設定 (インターネット設定/詳細設定タブ) をリセットし、IE 11 にアップグレードしました。

タブ設定を変更するとこれに影響があるように見えますが、どのオプションでも期待どおりの動作は得られません。

[1] サンプルコード:

<A class=oLinkExternal href="http://orgintranet.org.co.uk/systems/ibd-db/" target=_blank>IBD database</A>

[2] バージョン42.0.2311.135

答え1

target="_blank"動作しますが、 は動作しないのでtarget=_blank、これは IE11 のバグのようで、アンダースコアで始まる属性を正しく解析していません。

私が考えられるこのようなバグの回避策は次のとおりです。

  1. 別のより優れたブラウザを使用する
  2. インターネット上のすべてのページを修正しtarget=_blanktarget="_blank"

最初のオプションの場合、私の助けは必要ありません。

2 番目のオプションは、思ったほど不可能ではありません。以下にアプローチの概要を示しますが、私は IE11 を使用しておらず、これを試したことがないことを考慮してください。

読み込まれたHTMLページを変更するソフトウェアはグリースモンキーIE11 用にいくつかの改良版 (品質は不明) が存在します。

そのうちの 1 つが機能すると仮定すると、次のユーザー スクリプトがその機能を果たす可能性があります。

// ==UserScript==
// @name        your-choice
// @namespace       http://avoid.collusions.com
// @description     Resets target="_blank" links hoping to add quotes.
// @include     *
// ==/UserScript==
(function () {
    var external = document.links; 
    for (var k=0; k<external.length; k++)   
        if (external[k].href && external[k].target=="_blank") 
            external[k].target = "_blank";
})();

これは、おそらく誤って、Greasemonkey が置換する属性を引用符で囲むことを前提としています。 そうならない場合は、引用符を強制するようにスクリプトを変更できます。

何もテストしていないので、この方法が機能しない場合は事前にお詫び申し上げます。

答え2

jQueryを使用してtarget='_blank'属性を削除できます。

何かのようなもの

$document.ready(function(){
 $("a").attr('target','_blank');
});

または単にjs

var as = [].slice.apply(document.getElementsByClassName('oLinkExternal'));
for (var a in as){as[a].target="");}

関連情報