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ąć?
javascript
firefox
Adam
źródło
źródło
Odpowiedzi:
Nadaj oknu parametr „specs” o szerokości / wysokości. Zobacz tutaj wszystkie możliwe opcje.
Po określeniu szerokości / wysokości zostanie ona otwarta w nowym oknie zamiast karty.
źródło
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:
W przypadku konkretnego adresu URL:
źródło
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 wfocus()
taki sposób, aby już otwarte wyskakujące oknowindow.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ć.
źródło
Próbować:
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ę.
źródło
OK, po wykonaniu wielu testów, oto mój wniosek:
Kiedy wykonujesz:
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ć:
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:
I to:
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ę.
źródło
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).
źródło
Możesz wypróbować następującą funkcję:
Kod HTML do wykonania:
źródło
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?Kluczem są parametry:
Jeśli podasz Parametry [Wysokość = "", Szerokość = ""], to otworzy się w nowych oknach.
Jeśli NIE podasz parametrów, otworzy się w nowej karcie.
Testowane w Chrome i Firefox
źródło
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:
źródło
wypróbuj tę metodę .....
źródło
Dla mnie rozwiązaniem było mieć
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):
źródło
Właśnie próbowałem tego z IE (11) i Chrome (54.0.2794.1 kanarek SyzyASan):
... 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.
źródło
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.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.źródło
Myślę, że nie jest to problem z właściwościami docelowymi HTML, ale odznaczono opcję „otwórz nowe okna nw w nowej karcie zamiast” opcję w zakładce „karta” w menu „Opcje” Firefoksa. sprawdź i spróbuj ponownie.
źródło
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.
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:
A następnie za pomocą trochę javascript z tutaj można uzyskać adres URL i przekierowanie do niego.
JavaScript na stronie przekierowania:
źródło