2013-10-31 22 views
8

Tôi nhận thấy có một vài câu hỏi đã có trên SO cho chủ đề này, nhưng tất cả chúng dường như khá cũ .... chỉ cố gắng để có được một up-to-date trả lời cho điều này:Javascript - Mở liên kết trong tab mới (SAME WINDOW)

có phải là cách chuẩn mở một tab mới (bên trong cửa sổ trình duyệt giống nhau) vẫn:

window.open('url', '_blank'); 
window.focus(); 

???

Ngoài ra, tôi đã đọc rằng nó phụ thuộc vào cấu hình người dùng của trình duyệt của họ (cho dù trang mới mở trong tab mới hoặc cửa sổ mới, và liệu tab/cửa sổ mới có lấy tiêu điểm) hay không. ..Tôi muốn tập trung vẫn ở trên tab gốc, nhưng tôi quan tâm hơn đến việc nó mở một tab trong cùng một cửa sổ trình duyệt (giữ tiêu điểm chỉ là một phần thưởng).

Vậy có cách nào để đọc/nhận cài đặt này trong trình duyệt mới không? (chrome, ff, ie) Và có thể thông báo cho người dùng thay đổi cài đặt của họ nếu họ đã đặt cài đặt để mở trong cửa sổ mới?

Trả lời

12

Tôi đã có thành công lớn với

<a target='_blank' > 
+1

trích dẫn jQueryUI liên kết là về việc thêm các tab để một ứng dụng web trong một tab trình duyệt; không phải về việc thêm tab trình duyệt! –

+2

Bạn biết không? Bạn đúng. Nhìn lại, tôi không biết tại sao tôi lại liên kết với điều đó. – Giganticus

9

Sử dụng target="_blank" là thuận lợi.

ví dụ: trong Chrome, các neo có target="_blank" mở một tab mới, tuy nhiên, window.open sẽ mở ra một cửa sổ hoàn toàn mới.

Tôi đã thử một vài thử nghiệm để thay thế window.open bằng target="_blank".

bị chặn bởi chặn popup

// create an anchor, add to body, trigger click 
var a = document.createElement('a'); 
a.setAttribute('href', 'http://google.com'); 
a.setAttribute('target', '_blank'); 
document.body.appendChild(a); 
a.click(); 

// hijack first anchor, change href, trigger click 
var a = document.getElementsByTagName('a')[0]; 
a.setAttribute('href', 'http://google.com'); 
a.setAttribute('target', '_blank'); 
a.click(); 

// hijack first anchor that has target=_blank, change href, trigger click 
var a = $('a[target="_blank"]')[0]; 
a.setAttribute('href', 'http://google.com'); 
a.click(); 

phép bởi chặn popup

// hijack first anchor that has target=_blank, change href, next document click triggers it 
var a = $('a[target="_blank"]')[0]; 
a.setAttribute('href', 'http://google.com'); 
$(document).click(function(){ 
    $('a[target="_blank"]')[0].click(); 
}); 

// create an anchor, add to body, next document click triggers it 
var a = document.createElement('a'); 
a.setAttribute('href', 'http://google.com'); 
a.setAttribute('target', '_blank'); 
document.body.appendChild(a); 
$(document).click(function(){ 
    a.click(); 
}); 

Có vẻ như miễn là popup được kích hoạt bởi một sự tương tác của người dùng, chặn pop-up cho phép nó.

tài liệu của Mozilla trên window.open:

https://developer.mozilla.org/en-US/docs/Web/API/window.open

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