2012-04-23 38 views
10

Tôi đã tạo trang web cho một dự án tôi đang thực hiện. Trong nội dung của trang web có một số liên kết cho các trang web bên ngoài có thể được truy cập. Trong thời gian trung bình khi người dùng nhấp vào một trong các liên kết, anh ta sẽ được đưa đến liên kết được chỉ định và anh ấy sẽ không còn ở trang hiện tại nữa. Điều tôi muốn làm là có trang web được chỉ định trong liên kết được nhấp xuất hiện trong tab mới khi người dùng nhấp vào liên kết. Bằng cách này, người dùng vẫn ở trên trang hiện tại của anh ấy và cũng có thể xem trang khác trên tab mới.Mở liên kết trong tab mới

Tôi đã nhìn trên internet và thấy điều này mà dường như có ích:

function externalLinks() 
{ 
    var anchors = document.getElementsByTagName("a"); 
    for (var i=0; i<anchors.length; i++) 
    { 
     var anchor = anchors[i]; 
     if(anchor.getAttribute("href")) 
     anchor.target = "_blank"; 
    } 
} 
window.onload = externalLinks; 

Vấn đề tôi đang phải đối mặt là thanh điều hướng của trang web chứa các thẻ neo. Vì vậy, bây giờ nếu người dùng nhấp vào các liên kết trên thanh điều hướng, nó sẽ mở một tab mới. Tôi muốn điều này xảy ra CHỈ nếu người dùng nhấp vào liên kết trong nội dung của trang web của tôi. Vì vậy, nếu người dùng nhấp vào một liên kết trong thanh điều hướng, nó không nên mở một tab mới và chỉ cần đưa anh ta đến đích đã chỉ định.

Tôi đã thử thêm một lớp cho tất cả các liên kết trong nội dung và sử dụng getElementByClassName nhưng nó vẫn không làm việc

Bất cứ ai có thể giúp tôi với điều này

+1

Trong khi nó có thể có vẻ như một ý tưởng tốt, bạn không nên thực sự được buộc quyết định như vậy về khách truy cập của bạn - xem: http : //www.webcredible.co.uk/user-friendly-resources/web-usability/new-browser-windows.shtml – CJM

Trả lời

28


Bạn chỉ có thể sử dụng HTML:

<a target="_blank" href="YourAmazingURL">Click here for Amazing URL</a> 

Một Ví dụ:

<a target="_blank" href="http://www.google.com/">Google</a> 

này có lợi thế của các thuộc tính mục tiêu.

Thông tin thêm về các thuộc tính mục tiêu: http://www.w3schools.com/tags/att_a_target.asp Ngoài ra: http://www.w3schools.com/html/html_links.asp

EDIT:

Đối với XHTML, chỉ cần làm điều này:

<a href="YourAmazingURL" onclick="window.open(this.href,'_blank');return false;">Click here for Amazing URL</a> 

Hoặc, một lần nữa:

<a href="http://www.google.com/" onclick="window.open(this.href,'_blank');return false;">Google</a> 

+0

Vấn đề là tôi chỉ được yêu cầu sử dụng XHTML và khi xác thực trang mà nó nói đích không phải là thuộc tính –

+0

Có - Cập nhật cho XHTML. – anonymous

+0

Cảm ơn bạn. Tôi cũng tìm thấy một cách sử dụng jQuery để làm điều đó, nhưng cách này cũng là tốt đẹp để biết :-). –

2

Bạn đang cần thiết để sử dụng javascript cho điều này ?

Nếu không, bạn chỉ có thể thêm thuộc tính trực tiếp vào thẻ trong HTML.

Ví dụ: <a href="http://www.google.co.uk" target="_blank">Google</a>

Đó có lẽ sẽ là một cách dễ dàng hơn để bạn có thể làm điều đó nếu javascript được không cần thiết.

+1

Vấn đề là tôi chỉ được yêu cầu sử dụng XHTML và khi xác thực trang mà nó nói đích không phải là thuộc tính –

-1

bạn muốn sử dụng document.getElementById("theidgoeshere");

Để làm điều này, thiết lập các thuộc tính id trong liên kết của bạn như sau:

<a href="www.google.com" id="theidgoeshere">Google</a> 

Sau đó, trong javascript của bạn

var anchor = document.getElementById("theidgoeshere"); 
    if(anchor.getAttribute("href")) 
     anchor.target = "_blank"; 

Cũng lưu ý bạn có thể muốn để làm mà không có javascript. Chỉ cần đặt target="_blank" vào thẻ neo của bạn.

0

Nếu bạn cần phải dựa vào JavaScript:

Về cơ bản bạn chỉ cần thay đổi if -condition của bạn (để kiểm tra xem các điểm liên kết neo đến một vị trí bên ngoài hay không).

Vì vậy, thay vì if(anchor.getAttribute("href")), hãy sử dụng if(anchor.getAttribute("href") && anchor.hostname!==location.hostname).

Với một chút mã dọn dẹp, chức năng của bạn sẽ giống như sau:

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

Có thể downvoter vui lòng cung cấp bất kỳ ý kiến ​​như cho downvote? Cảm ơn! – eyecatchUp

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