it-swarm.com.de

window.open (URL, '_blank'); funktioniert nicht auf iMac/Safari

Ich habe eine Webseite erstellt, auf der Sie einen Seitennamen aus einer Dropdown-Liste auswählen und dann den Browser auf diese Seite übertragen können. Der Code für die Übertragung lautet

if (url){
    window.open(url, '_blank');
} 

dabei ist "URL" die ausgewählte Seite.

Ein Konsolenprotokoll direkt vor der window.open -Zeile gibt Folgendes aus:

    executing: window.open(http://www.mywebsite.com/44/threats.html, '_blank')

und dann öffnet der Browser die Seite in einer neuen Registerkarte.

Dies funktioniert problemlos unter Windows 7 für alle Browser, einschließlich Safari. 

Auf einem iMac funktioniert es für Firefox, aber nicht für Safari. 

Weiß jemand, warum iMac/Safari das nicht tut?

33
Steve

Safari blockiert jeden Aufruf von window.open (), der innerhalb eines asynchronen Aufrufs erfolgt. 

Die Lösung, die ich für dieses Problem gefunden habe, besteht darin, window.open vor einem asnyc-Aufruf aufzurufen und den Ort festzulegen, wenn das Versprechen gelöst wird.

var windowReference = window.open();

myService.getUrl().then(function(url) {
     windowReference.location = url;
});
87
Jeff Victorino

Um window.open () in safari zu verwenden, müssen Sie es in das onclick-Ereignisattribut eines Elements einfügen.

Zum Beispiel: <button class='btn' onclick='window.open("https://www.google.com", "_blank");'>Open Google search</button>

18
user2704238

Aus dem akzeptierten Antwortkommentar von Steve am 20. Dezember 2013 entnommen:

Eigentlich gibt es eine sehr einfache Möglichkeit: Klicken Sie im iMac/Safari-Browser auf "Popup-Fenster blockieren" und machen Sie, was ich will.

Wenn Sie Safari unter Mac OS X El Capitan ausführen, verdeutlichen Sie Folgendes:

  1. Safari -> Einstellungen
  2. Sicherheit -> Deaktivieren Sie "Popup-Fenster blockieren".
14
jnrcorp

Es gibt eine Einstellung in Safari unter "Tabs", die Open pages in tabs instead of windows: mit einem Dropdown mit einigen Optionen bezeichnet. Ich denke, Ihre kann auf Always eingestellt sein. Unter dem Strich können Sie sich nicht darauf verlassen, dass ein Browser ein neues Fenster öffnet.

0
Bill Criswell

window.location.assign(url) Dies behebt das window.open(url)-Problem in iOS-Geräten

0
sama vamsi