Dường như trình duyệt hiện đại không cho phép bạn window.focus
một cửa sổ hiện tại. Hoặc ít nhất, nó sẽ không tập trung vào cửa sổ đó. (IE9 sẽ thực sự nhấp nháy tab, nhưng hầu hết các trình duyệt khác chỉ tải nó nhưng không đưa ra dấu hiệu cho thấy sự chú ý của người dùng sẽ được kéo đến cửa sổ mới.)
Do đó, một giải pháp tự thể hiện là đóng cửa sổ trước, và sau đó mở lại ngay sau đó. Ví dụ, declare the following function:
window.openOrFocus = function(url, name) {
if (!window.popups)
window.popups = {};
if (window.popups[name])
window.popups[name].close();
window.popups[name] = window.open(url, name);
}
Bây giờ, bạn có thể viết HTML như thế này:
<a href="javascript:void(0);" onclick="openOrFocus('http://jsfiddle.net/k3t6x/2/', 'window1')">Window 1</a><br />
<a href="javascript:void(0);" onclick="openOrFocus('http://jsfiddle.net/KR6w3/1/', 'window2')">Window 2</a><br />
Kể từ khi nó đóng cửa sổ đầu tiên, nó chắc chắn mang lại cho tập trung vào cửa sổ con mới được tạo ra.
Giải pháp này cũng sử dụng không gian tên window.popups
, vì vậy hãy đổi tên tập quán đó trong mẫu javascript nếu bạn có chức năng tên là popups
hoặc có cách khác.
Caveat: Điều này không hoạt động sau khi sau lưng. Điều này là do một khi bạn điều hướng khỏi trang hiện tại, nó không còn là chủ sở hữu của các cửa sổ con. Do đó, nó không thể đóng chúng nữa. Tuy nhiên, nó chỉ làm giảm hoạt động bình thường (không tập trung) khi sử dụng thuộc tính target
.
Tested Trong: Firefox 4, Chrome 11, IE 9
JsFiddle Demo:http://jsfiddle.net/aqxBy/7/
Cửa sổ đang tải, không hiển thị? Có phải tải trang chính xác không? Liệu nó có cùng một hành vi trong mọi trình duyệt không? Tôi nghĩ rằng đây là một mối quan tâm quản lý cửa sổ, không phải cái gì bạn có thể làm từ javascript, nhưng tôi đang diễn viên cho bây giờ, tôi muốn làm theo cùng. – jcolebrand