2012-10-20 35 views
8

Cách tốt nhất để mở tất cả các liên kết bên ngoài (URL không khớp với tên miền hiện tại) trong tab mới bằng JavaScript, không sử dụng jQuery là gì?Mở các liên kết bên ngoài trong tab mới mà không cần jQuery

Đây là jQuery Tôi hiện sử dụng:

// 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; 
    } 
}); 

Trả lời

16

JS tinh khiết:

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(); 
+0

Tuyệt vời, cảm ơn bạn! – AlecRust

0

Thêm một target = "_ blank" vào thẻ. Bạn có thể làm điều đó trong bộ xử lý trước (ví dụ: PHP) hoặc trong một JS trong sự kiện onload.

+0

làm rõ câu hỏi. – AlecRust

+0

Bạn đang tìm kiếm một cách để làm điều trên ở JavaScript nhưng không sử dụng jQuery? Nếu vậy, bạn có thư viện nào khác không, hay nó phải là JS đơn giản? –

+0

JS đồng bằng nếu có thể. – AlecRust

0
 $("a[href^=http]").each(function(){ 
      if(this.href.indexOf(location.hostname) == -1) { 
      $(this).attr({ 
       target: "_blank", 
       title: "Opens in a new window" 
      }); 
      } 
     }) 

Tập lệnh này sẽ phù hợp với bạn.

UPDATE: cố gắng fiddle này http://jsfiddle.net/sameerast/GuT2y/

JS phiên bản

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'; 
     } 
     } 
    }; 
+0

Điều đó không sử dụng chức năng [.each()] của jQuery (http://api.jquery.com/jQuery.each/)? – AlecRust

+0

Nó được sử dụng và thêm mục tiêu = "_ blank", sau đó người dùng nhấp vào nó đi đến liên kết dưới dạng tab/cửa sổ mới –

+0

Như tôi đã nói, giải pháp của bạn không sử dụng hàm .each() của jQuery? Câu hỏi của tôi chỉ định không sử dụng jQuery. – AlecRust

Các vấn đề liên quan