10

jQueryを使用せずに、JavaScriptを使用してすべての外部リンク(現在のドメインと一致しないURL)を新しいタブで開く最良の方法は何ですか?

私が現在使用しているjQueryは次のとおりです。

// Open external links in new tab
$('a[href^=http]').click(function () {
    var a = new RegExp('/' + window.location.host + '/');
    if (!a.test(this.href)) {
        window.open(this.href);
        return false;
    }
});
4

4 に答える 4

23

純粋なJS:

function externalLinks() {
  for(var c = document.getElementsByTagName("a"), a = 0;a < c.length;a++) {
    var b = c[a];
    b.getAttribute("href") && b.hostname !== location.hostname && (b.target = "_blank")
  }
}
;
externalLinks();
于 2012-10-30T20:39:24.550 に答える
0

タグに target="_blank" を追加します。これは、プリプロセッサ (PHP など) または JS で onload イベント中に実行できます。

于 2012-10-20T11:41:01.727 に答える
0
       $("a[href^=http]").each(function(){
          if(this.href.indexOf(location.hostname) == -1) {
             $(this).attr({
                target: "_blank",
                title: "Opens in a new window"
             });
          }
       })

このスクリプトはうまくいくはずです。

更新:このフィドルを試してくださいhttp://jsfiddle.net/sameerast/GuT2y/

JS バージョン

    var externalLinks = function(){
      var anchors = document.getElementsByTagName('a');
      var length = anchors.length;
      for(var i=0; i<length;i++){
        var href = anchor[i].href;
        if(href.indexOf('http://sample.com/') || href.indexOf('http://www.sample.com/')){
          return;
        }
        else{
          anchor[i].target='_blank';
        }
      }
    };
于 2012-10-20T11:46:27.930 に答える