Frage

Ich versuche, ein neues Fenster zu öffnen wie folgt:

$('#wrapper').click(function() {
    window.setTimeout(function() {
        //alert('hi');
        window.open("http://example.com", "ExternalLinks", "resizable=yes, scrollbars=yes, status=yes");
    }, 1000);
});

Dies funktioniert in Firefox, aber nicht in Chrome oder Safari (bisher habe ich nur auf einem Mac getestet). Die alert() funktioniert in allen Browsern, so scheint es von der Ausführung in Safari / Chrome etwas verhindern, dass das window.open zu sein. Außerdem, wenn ich die setTimeout entfernen und rufen Sie die window.open dann funktioniert es in allen drei Browsern. Es ist fast wie wenn der window.open auch vom click Ereignisse weit entfernt verschachtelt ist, dann funktioniert es nicht in Safari / Chrome.

Damit Sie wissen, ich habe eine All-Flash-Website und ich versuche, externe Links zu bekommen in einem neuen Fenster zu öffnen, so dass ich den Hash-Tag in der URL (ex gerade lese htp:. // Beispiel. com / # / facebook /), und wenn es bestimmte Elemente übereinstimmt, dann eine bestimmte URL ich rufe window.open zu öffnen. Ich habe keinen Zugriff auf die Quelle Flash oder ich würde dieses dort behandeln.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Safari / Chrome hat eingebaute Pop-up-Blocker, die diese von der Arbeit aufhören. Die einzige Javascript, die erlaubt ist, in Safari ein neues Fenster zu öffnen / Chrome ist Javascript direkt klicken Handler angebracht (und andere direkte Benutzereingabe-Handler). In früheren Versionen dachten Menschen einige Auswege zu betrügen (wie ein anderes Element zu erzeugen - eine Form oder div - und Benutzereingaben mit Javascript Simulation), aber neueren Versionen sind klüger darüber zu erkennen. Ich würde Neukonfiguration Dinge so empfehlen, dass Sie nicht eine verzögerte Pop-up verwenden -., Die die Art der Sache ist, die im Allgemeinen schließlich zu einem Benutzer werden Rütteln kann

Andere Tipps

habe ich um diese durch den Rückgabewert von window.open Überprüfung () für nicht definiert. Wenn das wahr Anrufsignal () mit einer Nachricht für den Benutzer, um ihre Popup-Blocker zu deaktivieren.

var myWin = window.open([args]);

if (myWin == undefined)
   alert('Please disable your popup blocker');

Eine andere Lösung
Öffnen Sie einfach ein Popup mit ACCEPT und Löschen Optionen und fügen Sie die window.open
Aktion auf die Schaltfläche ACCEPT und es wird funktioniert. Er arbeitete für mich ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top