2010-12-28 19 views
11

Próbuję naprawić stronę internetową.html otwórz adres URL nowego celu i ostrości

Otwiera stronę pomocy w nowym oknie/karcie poprzez <a href="..." target="help"> (żadna inna rama ma tę nazwę)

Działa to dobrze po raz pierwszy otwarcie nowego okna/zakładki, za pomoc. Po kolejnych kliknięciach okno/karta jest załadowane, ale pozostaje ukryte.

Próbowałem to:

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

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

To nie działa!

+0

Okno się ładuje, ale nie wyświetla się? Czy ładowanie prawidłowej strony? Czy ma to samo zachowanie w każdej przeglądarce? Myślę, że to jest problem dotyczący menedżera okien, a nie coś, co można zrobić z javascriptu, ale teraz mam na to ochotę, chcę pójść dalej. – jcolebrand

Odpowiedz

3

Myślę, że ta funkcja jest przeglądarka specyficzne i nie można zdefiniować zachowanie na skupienie nowe karty lub okna ..

2

Można mieć takiego kodu:

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; 
} 

Wtedy to nazwać mają taki link:

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

działa poprawnie w Chrome i IE, Firefox niestety wyłączyć domyślnie opcję „podnieść” okna w kodzie tak focus() nie ma wpływu na ta przeglądarka - nie można znaleźć żadnej pracy.

przypadek testowy jest dostępny tutaj: http://jsfiddle.net/yahavbr/eVxJX/

+0

@richard: jaka przeglądarka? czy dzieje się to także w próbce jsfiddle? –

+0

Przykład w http://jsfiddle.net/yahavbr/eVxJX/ działa dla chome nie firefox, jak wspomniano powyżej. Powtórzę test z np. Po powrocie do pracy. –

+0

Testowany przy użyciu ie6 i nie działa z nim. –

7

Wydaje się, że nowoczesne przeglądarki nie pozwalają na window.focus istniejącego okna. A przynajmniej nie da ostrości okna. (IE9 zacznie migotać kartę, ale większość innych przeglądarek jedynie ją wczytuje, ale nic nie wskazuje, aby zwrócić uwagę użytkownika na nowe okno).

Dlatego jednym z rozwiązań, które się przedstawia, jest najpierw zamknięcie okna, a następnie ponownie otwórz go natychmiast po. Na przykład, 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); 
} 

Teraz można napisać kod HTML, takich jak to:

<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 /> 

Ponieważ zamyka okno po pierwsze, to niezawodnie daje ostrość do nowo utworzonego okna potomnego.

To rozwiązanie również używa nazw window.popups, więc zmiana nazwy zwyczaje, które w próbce javascript jeśli masz funkcję o nazwie popups lub w inny sposób zderzył się z nim.

Zastrzeżenie: To nie działa po odesłaniu. Dzieje się tak dlatego, że po przejściu z bieżącej strony nie jest ona już właścicielem okien podrzędnych. Dlatego nie może ich już zamykać. Jednak po prostu pogarsza się do zwykłego (nie koncentrując się) zachowanie przy użyciu atrybutu target.

testowane w: Firefox 4, Chrome 11, IE 9
JsFiddle Demo:http://jsfiddle.net/aqxBy/7/

1

Oto jeden ze sposobów korzystania z jQuery i HTML5 reklamy zastępczej dla klientów JavaScript sprawnych. Przeładuje strony po każdym kliknięciu. Testowane i działa w przeglądarkach Firefox i 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> 
Powiązane problemy