diff options
-rw-r--r-- | src/event.js | 2 | ||||
-rw-r--r-- | test/data/event/triggerunload.html | 18 | ||||
-rw-r--r-- | test/unit/event.js | 5 |
3 files changed, 24 insertions, 1 deletions
diff --git a/src/event.js b/src/event.js index 8d4031211..ee1f3fcad 100644 --- a/src/event.js +++ b/src/event.js @@ -583,7 +583,7 @@ jQuery.event = { // Support: Firefox 20+ // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined ) { + if ( event.result !== undefined && event.originalEvent ) { event.originalEvent.returnValue = event.result; } } diff --git a/test/data/event/triggerunload.html b/test/data/event/triggerunload.html new file mode 100644 index 000000000..a7879c772 --- /dev/null +++ b/test/data/event/triggerunload.html @@ -0,0 +1,18 @@ +<!doctype html> +<html> + <script src="../../jquery.js"></script> + <script> + var called = false, + error = false; + + window.onerror = function() { error = true; }; + + jQuery( window ).on( "beforeunload", function( event ) { + called = true; + return "maybe"; + }).on( "load", function( event ) { + $( window ).triggerHandler( "beforeunload" ); + window.parent.iframeCallback( called && !error ); + }); + </script> +</html> diff --git a/test/unit/event.js b/test/unit/event.js index 22f6dacef..84cad50ac 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -2434,6 +2434,11 @@ testIframeWithCallback( "Focusing iframe element", "event/focusElem.html", funct ok( isOk, "Focused an element in an iframe" ); }); +testIframeWithCallback( "triggerHandler(onbeforeunload)", "event/triggerunload.html", function( isOk ) { + expect( 1 ); + ok( isOk, "Triggered onbeforeunload without an error" ); +}); + // need PHP here to make the incepted IFRAME hang if ( hasPHP ) { testIframeWithCallback( "jQuery.ready synchronous load with long loading subresources", "event/syncReady.html", function( isOk ) { |