2016-04-15 6 views
0

ich ein neues Fenster öffnen mit window.open()‚beforeunload‘ Ereignis nur ausgelöst, in Firefox, wenn ich auf der Seite klicken

Und dann einen Skript (ein Ajax-Aufruf) Ich versuche zu laufen, wenn der Benutzer das schließt geöffnetes Fenster.

Die offene funktioniert gut, aber der Code wie in FF erwartet funktioniert nicht, wenn ich versuche, das Fenster

Hier ist mein Code

<?php 

echo '<div id="iframecontainer"><iframe name="meeting-iframe" frameborder="0" style="width:80%;height:80%" src="' . $link . '"></iframe></div>'; 


?> 
<script> 
(function ($) { 

    $(document).ready(function() { 


    // Variables from php 
    var event_id = '<?php echo $event_id; ?>'; 
    var user_id = '<?php echo $current_user->uid; ?>'; 
    ////////////////////////////////////////////////////////////////////// 
    // Run function before window is closed,doesn't work as expected in FF 
    window.addEventListener("beforeunload", function (e) { 

     var e = e || window.event; 
     var message = 'Are you sure you want to leave the meeting?'; 


     if(e) { 
     e.returnValue = message; 
     } 


    // Post to get meeting info 
     $.post('/easymeet/getInfo/' + event_id).done(function(meetResponse) { 
     //ajax callback ,I have hidden the code here as I don't think its relevent to the question 

     }); 
    }); 

    }); 
}(jQuery)) 

Ich lade ein iframe in meinem Fenster zu schließen und die Seite, die der iframe holt, ist alles Flash (nur um darauf hinzuweisen).

Ich teste in IE, Chrome und Firefox Was passiert hier ist vorunload wird ausgelöst und funktioniert gut in IE und Chrome.

Aber in Firefox Ich habe manuell zu Klick auf der HTML oder eine Interaktion tun. Wenn ich versuche, das Fenster zu schließen, ohne etwas zu tun, scheint das "beforeunload" -Ereignis überhaupt nicht ausgelöst zu werden.

+0

Irgendeine Lösung zu diesem? –

+0

@ IonicăBizău hast du irgendeine Lösung gefunden? Ich kratze meine Haare – slier

+0

@slier Nein, es ist einfach die Art und Weise, wie Firefox funktioniert (es sei denn, Sie ändern die 'about: config' - wie unten erwähnt, die Sie wahrscheinlich nicht interessiert sind). Ich fürchte, es gibt keine Möglichkeit, das zu erzwingen. –

Antwort

0

Firefox hat einige Konfigurationen, die Sie schreiben können "about: config" in der Navigationsleiste. Dort finden Sie einige Flags, einschließlich dom.require_user_interaction_for_beforeunload, die das Ereignis 'beforeunload' nur auslöst, wenn Sie auf die Seite klicken. Sie können diese Konfiguration jedoch nicht durch Code ändern. Sie müssen dies manuell in Firefox tun.

PS: Entschuldigung für mein Englisch.

Verwandte Themen