2012-12-08 18 views
16

Bây giờ tôi có một liên kếturl mở trong tab mới hoặc tái sử dụng hiện có bất cứ khi nào có thể

<a href="blabla" target="_blank">link</a> 

Tuy nhiên, điều này luôn luôn mở ra một tab mới. Tôi muốn các hiệu ứng sau

  1. Nếu người dùng đã có một tab với cùng một URL, tái sử dụng tab đó và làm mới nếu có thể
  2. Nếu không, mở một tab mới

Làm thế nào tôi có thể đạt được điều này bằng cách sử dụng JavaScript?

OK nếu chỉ có một số phương pháp dành riêng cho trình duyệt, vì vậy, người dùng trình duyệt không hỗ trợ tương ứng sẽ "dự phòng" theo cách luôn mới.

+0

Tôi chưa có đủ danh tiếng để nhận xét, vì vậy, vui lòng không chọn câu trả lời này làm câu trả lời nhưng tôi tin rằng bạn sẽ tìm thấy một câu hỏi gần giống với câu hỏi này tại đây: http://stackoverflow.com/questions/2641812/how-to-detect-that-the-cùng-page-is-already-opened-in-another-window-in-ie Chúc may mắn! –

Trả lời

19

Bạn có thể đặt tên cửa sổ cụ thể để mở lại tab. Vấn đề là, theo như href sẽ giống nhau, nó sẽ không được tải lại. Vì vậy, bạn không thể dễ dàng có được phần refresh.

Vì vậy, ví dụ, bạn có thể có:

<a href="blabla" target="blabla">link</a> 
<a href="foo" target="bar">link</a> 

Trong JS, bạn có thể thực sự có được giống nhau, sử dụng window.open. Bạn cũng có thể sử dụng đường dẫn url là target, do đó bạn không cần phải xác định bằng tay:

<a href="blabla" onclick="window.open(this.href, this.href); return false">link</a> 
<a href="foo" onclick="window.open(this.href, this.href); return false">link</a> 

Bạn cũng có thể khái quát, và thêm một người biết lắng nghe nhấp chuột vào tài liệu, để mở một số liên kết theo cách này . Một cái gì đó như:

<div id="container"> 
    <a href="blabla">link</a> 
    <a href="foo">link</a> 
</div> 

<script> 
    document.getElementById("container").onclick = function(evt){ 
     if (evt.target.tagName === "A") 
      window.open(evt.target.href, evt.target.href); 

     return false; 
    } 
</script> 

Nếu trang trên cùng một tên miền, tại thời điểm này, bạn có thể cố gắng làm một trang làm mới theo kinh nghiệm.

+2

Bằng cách nào đó nó không hoạt động đối với tôi. Nếu tôi hiểu câu hỏi và câu trả lời, có nghĩa là, nhấp vào liên kết đầu tiên sẽ mở tab mới trong trình duyệt và sau khi bất kỳ liên kết nào được nhấp, cùng một tab trình duyệt sẽ được sử dụng lại ... Tôi đã thử giải pháp này nhưng chưa bao giờ làm việc. Nó sẽ mở tab mới mỗi lần. Ngoại trừ Nếu kích hoạt liên kết tương tự, nó sẽ không mở một tab khác. – Liladhar

+0

Lưu ý rằng sau khi trình duyệt Ctrl + Click thứ hai (ít nhất là Chrome) sẽ chuyển sang tab này. Đó không thực sự là điều tôi mong đợi. – coolguy

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