2010-12-28 33 views
11

Tôi đang cố sửa một trang web.html mở url trên mục tiêu mới và tập trung

Nó sẽ mở ra một trang trợ giúp trong một cửa sổ mới/tab qua <a href="..." target="help"> (không có khung khác có tên này)

này hoạt động tốt lần đầu tiên mở một cửa sổ mới/tab, cho sự giúp đỡ. Nhưng trên các lần nhấp tiếp theo, cửa sổ/tab được tải nhưng vẫn bị ẩn.

Tôi cố gắng này:

<script> 
    function OpenAndFocusHelp() { 
     win=window.open('help/1000CH00017.htm','help'); 
     win.focus(); 
    }  
</script> 

<a href="help.html" target="help" 
    onclick="OpenAndFocusHelp()">Help</a> 

Nó không làm việc!

+0

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

Trả lời

3

Tôi nghĩ rằng tính năng này là trình duyệt cụ thể và bạn không thể xác định hành vi để tập trung các tab mới hoặc cửa sổ ..

2

Bạn có thể có mã như vậy thay vì:

var _arrAllWindows = new Array(); 
function OpenOrFocus(oLink, sTarget) { 
    var oWindow = _arrAllWindows[sTarget]; 
    if (!oWindow || oWindow.closed) { 
     oWindow = window.open(oLink.href, sTarget); 
     _arrAllWindows[sTarget] = oWindow; 
    } 
    oWindow.focus(); 
    return false; 
} 

Sau đó, để gọi nó là , có liên kết như vậy:

<a href="http://www.google.com" onclick="return OpenOrFocus(this, 'help');">Open</a> 

trình tốt trong Chrome và IE, không may Firefox vô hiệu hóa theo mặc định tùy chọn để "nâng cao" cửa sổ trong mã để focus() không có tác dụng trong trình duyệt đó - không thể tìm thấy bất kỳ công việc nào xung quanh.

trường hợp thử nghiệm có sẵn ở đây: http://jsfiddle.net/yahavbr/eVxJX/

+0

@richard: trình duyệt nào? nó có xảy ra trong mẫu jsfiddle không? –

+0

Ví dụ trong http://jsfiddle.net/yahavbr/eVxJX/ hoạt động đối với chome không phải firefox như đã đề cập ở trên. Sẽ kiểm tra lại với nghĩa là khi trở lại làm việc. –

+0

Thử nghiệm với ie6 và không hoạt động, với nó. –

7

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/

1

Dưới đây là một trong những cách sử dụng jQuery và HTML5 với dự phòng cho các khách hàng JavaScript khuyết tật. Nó sẽ tải lại các trang trên mỗi nhấp chuột. Đã thử nghiệm và hoạt động trong Firefox và Chrome.

<script> 
    $(document).ready(function() { 
     $('a[data-popup]').click(function(event) { 
      event.preventDefault(); 
      window.open(this.href, this.dataset['popup'], 'resizable,scrollbars').focus(); 
     }); 
    }); 
</script> 

<a href="https://stackoverflow.com/" target="_blank" data-popup="stackoverflow">Stack Overflow</a> 
<a href="https://superuser.com/" target="_blank" data-popup="superuser">Super User</a> 
<a href="https://serverfault.com/" target="_blank" data-popup="serverfault">Server Fault</a> 
Các vấn đề liên quan