Mam pole wyboru, które wywołuje window.open(url)
po wybraniu elementu. Firefox domyślnie otworzy stronę w nowej karcie. Chciałbym jednak, aby strona otworzyła się w nowym oknie, a nie w nowej karcie.
Jak mogę to osiągnąć?
Mam pole wyboru, które wywołuje window.open(url)
po wybraniu elementu. Firefox domyślnie otworzy stronę w nowej karcie. Chciałbym jednak, aby strona otworzyła się w nowym oknie, a nie w nowej karcie.
Jak mogę to osiągnąć?
Odpowiedzi:
Nadaj oknu parametr „specs” o szerokości / wysokości. Zobacz tutaj wszystkie możliwe opcje.
window.open(url, windowName, "height=200,width=200");
Po określeniu szerokości / wysokości zostanie ona otwarta w nowym oknie zamiast karty.
Nie musisz używać wysokości, po prostu upewnij się, że używasz. _blank
Bez niej otwiera się w nowej karcie.
W przypadku pustego okna:
window.open('', '_blank', 'toolbar=0,location=0,menubar=0');
W przypadku konkretnego adresu URL:
window.open('http://www.google.com', '_blank', 'toolbar=0,location=0,menubar=0');
location=0
jest konieczne, gdy JS jest wywoływany z przycisku lub elementu kotwicy.
location=0
parametrów. Proponuję również nazwać okno zamiast używać _blank
celu, aby to samo okno zostało użyte ponownie, jeśli użytkownik kliknie kilkakrotnie element otwierający wyskakujące okno, i połączenie go w focus()
taki sposób, aby już otwarte wyskakujące okno window.open('http://stackoverflow.com', 'Stack_Overflow','location=0').focus();
Mogę się mylić, ale z tego, co rozumiem, jest to kontrolowane przez preferencje przeglądarki użytkownika i nie sądzę, że można to zmienić.
Próbować:
window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");
Mam kod, który robi to, co mówisz, ale zawiera wiele parametrów. Myślę, że są to absolutne minimum, daj mi znać, jeśli to nie zadziała, opublikuję resztę.
OK, po wykonaniu wielu testów, oto mój wniosek:
Kiedy wykonujesz:
window.open('www.yourdomain.tld','_blank');
window.open('www.yourdomain.tld','myWindow');
lub cokolwiek wstawisz w polu docelowym, nic to nie zmieni: nowa strona zostanie otwarta w nowej karcie (więc zależy od preferencji użytkownika)
Jeśli chcesz, aby strona była otwierana w nowym „prawdziwym” oknie, musisz wprowadzić dodatkowy parametr. Lubić:
window.open('www.yourdomain.tld', 'mywindow','location=1,status=1,scrollbars=1, resizable=1, directories=1, toolbar=1, titlebar=1');
Po przetestowaniu wydaje się, że używasz dodatkowego parametru, to nie ma znaczenia: to nie jest fakt, że wstawiasz „ten parametr” lub „ten inny”, które tworzą nowe „prawdziwe okno”, ale fakt, że są nowe parametry (s ).
Ale coś jest zdezorientowane i może wyjaśniać wiele błędnych odpowiedzi:
To:
win1 = window.open('myurl1', 'ID_WIN');
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
I to:
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
win1 = window.open('myurl1', 'ID_WIN');
NIE da tego samego rezultatu.
W pierwszym przypadku, gdy otworzysz stronę bez dodatkowego parametru, otworzy się w nowej karcie . W tym przypadku drugie połączenie zostanie otwarte również w tej zakładce z powodu podanej nazwy.
W drugim przypadku, gdy pierwsze połączenie zostanie wykonane z dodatkowym parametrem, strona zostanie otwarta w nowym „ prawdziwym oknie ”. W takim przypadku, nawet jeśli drugie wywołanie zostanie wykonane bez dodatkowego parametru, zostanie również otwarte w tym nowym „ prawdziwym oknie ” ... ale w tej samej zakładce!
Oznacza to, że pierwsze połączenie jest ważne, ponieważ decyduje, gdzie umieścić stronę.
Nie powinieneś. Pozwól użytkownikowi mieć dowolne preferencje.
Firefox robi to domyślnie, ponieważ otwieranie strony w nowym oknie jest denerwujące i nigdy nie powinno się na to zezwalać, jeśli nie jest to pożądane przez użytkownika. (Firefox pozwala otwierać karty w nowym oknie, jeśli ustawisz to w ten sposób).
Możesz wypróbować następującą funkcję:
<script type="text/javascript">
function open(url)
{
var popup = window.open(url, "_blank", "width=200, height=200") ;
popup.location = URL;
}
</script>
Kod HTML do wykonania:
<a href="#" onclick="open('http://www.google.com')">google search</a>
popup.location = URL;
? window.open()
Połączenie powinno otworzyć go do odpowiedniego adresu URL, a w przykładzie kodu, URL
nie jest określona tak, że będzie spadać z powrotem do experimental (i nie są powszechnie support) URL obiektu . Chociaż korzystanie z niego do tego jest dyskusyjne, jestem ciekawy, jakie są motywacje do jego wykorzystania tutaj?
Co ciekawe, odkryłem, że jeśli podasz pusty ciąg (w przeciwieństwie do ciągu zerowego lub listy właściwości) dla trzeciego atrybutu window.open, otworzy się w nowej karcie dla Chrome, Firefox i IE. Jeśli nie było, zachowanie było inne.
Oto moje nowe wezwanie:
window.open(url, windowName, '');
wypróbuj tę metodę .....
function popitup(url) {
//alert(url);
newwindow=window.open("http://www.zeeshanakhter.com","_blank","toolbar=yes,scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
newwindow.moveTo(350,150);
if (window.focus)
{
newwindow.focus()
}
return false;
}
Dla mnie rozwiązaniem było mieć
"location=0"
w 3. parametrze. Testowany na najnowszym FF / Chrome i starej wersji IE11
Pełne wywołanie metody, którego używam, jest poniżej (ponieważ lubię używać zmiennej szerokości):
window.open(url, "window" + id, 'toolbar=0,location=0,scrollbars=1,statusbar=1,menubar=0,resizable=1,width=' + width + ',height=800,left=100,top=50');
Właśnie próbowałem tego z IE (11) i Chrome (54.0.2794.1 kanarek SyzyASan):
window.open(url, "_blank", "x=y")
... i otworzyło się w nowym oknie.
Co oznacza, że Clint pachl miał rację, gdy powiedział, że podanie jednego parametru spowoduje otwarcie nowego okna.
- i najwyraźniej nie musi to być uzasadniony parametr!
(YMMV - jak powiedziałem, przetestowałem go tylko w dwóch miejscach ... a kolejna aktualizacja może w jakikolwiek sposób unieważnić wyniki)
ETA: Właśnie zauważyłem - w IE okno nie ma dekoracji.
Odpowiedziałem tutaj . Ale opublikowanie go ponownie w celach informacyjnych.
window.open()
nie otworzy się w nowej karcie, jeśli nie dzieje się to podczas rzeczywistego zdarzenia kliknięcia. W podanym przykładzie adres URL jest otwierany podczas faktycznego zdarzenia kliknięcia. Działa to pod warunkiem, że użytkownik ma odpowiednie ustawienia w przeglądarce.
<a class="link">Link</a>
<script type="text/javascript">
$("a.link").on("click",function(){
window.open('www.yourdomain.com','_blank');
});
</script>
Podobnie, jeśli próbujesz wykonać wywołanie ajax w ramach funkcji kliknięcia i chcesz otworzyć okno sukcesu, upewnij się, że wykonujesz wywołanie ajax z async : false
zestawem opcji.
Miałem to samo pytanie, ale znalazłem stosunkowo proste rozwiązanie.
W JavaScript sprawdzałem, window.opener !=null;
czy okno jest wyskakujące. Jeśli używasz podobnego kodu wykrywającego w celu ustalenia, czy okno, w którym wyświetlana jest witryna, jest wyskakujące, możesz łatwo „wyłączyć”, gdy chcesz otworzyć „nowe” okno za pomocą nowego JavaScript JavaScript.
Wystarczy umieścić to u góry strony, aby zawsze było „nowym” oknem.
<script type="text/javascript">
window.opener=null;
</script>
Używam tego na stronie logowania w mojej witrynie, aby użytkownicy nie otrzymywali wyskakujących okienek, jeśli używają wyskakującego okienka do nawigacji do mojej witryny.
Możesz nawet utworzyć prostą stronę przekierowującą, która to zrobi, a następnie przejdzie do podanego adresu URL. Coś jak,
JavaScript na stronie nadrzędnej:
window.open("MyRedirect.html?URL="+URL, "_blank");
A następnie za pomocą trochę javascript z tutaj można uzyskać adres URL i przekierowanie do niego.
JavaScript na stronie przekierowania:
<script type="text/javascript">
window.opener=null;
function getSearchParameters() {
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}
function transformToAssocArray( prmstr ) {
var params = {};
var prmarr = prmstr.split("&");
for ( var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = tmparr[1];
}
return params;
}
var params = getSearchParameters();
window.location = params.URL;
</script>