aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/data/event/onbeforeunload.html11
-rw-r--r--test/unit/event.js19
2 files changed, 20 insertions, 10 deletions
diff --git a/test/data/event/onbeforeunload.html b/test/data/event/onbeforeunload.html
index 11ad1964a..30053967a 100644
--- a/test/data/event/onbeforeunload.html
+++ b/test/data/event/onbeforeunload.html
@@ -4,17 +4,18 @@
<script>
function report( event ) {
var payload = {
+ source: "jQuery onbeforeunload iframe test",
event: event.type
};
- return parent.postMessage( JSON.stringify(payload), "*" );
+ return parent.postMessage( JSON.stringify( payload ), "*" );
}
jQuery( window ).on( "beforeunload", function( event ) {
report( event );
- }).on( "load", function( event ) {
- setTimeout(function() {
+ } ).on( "load", function( event ) {
+ setTimeout( function() {
window.location.reload();
- }, 50);
- });
+ }, 50 );
+ } );
</script>
</html>
diff --git a/test/unit/event.js b/test/unit/event.js
index 38a805b37..ac309d22d 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -1448,13 +1448,22 @@ QUnit[ /(ipad|iphone|ipod)/i.test( navigator.userAgent ) ? "skip" : "test" ](
var done = assert.async();
window.onmessage = function( event ) {
- var payload = JSON.parse( event.data );
+ try {
+ var payload = JSON.parse( event.data );
- assert.ok( payload.event, "beforeunload", "beforeunload event" );
+ // Ignore unrelated messages
+ if ( payload.source === "jQuery onbeforeunload iframe test" ) {
+ assert.ok( payload.event, "beforeunload", "beforeunload event" );
- iframe.remove();
- window.onmessage = null;
- done();
+ iframe.remove();
+ window.onmessage = null;
+ done();
+ }
+ } catch ( e ) {
+
+ // Messages may come from other sources, like browser extensions;
+ // some may not be valid JSONs and thus cannot be `JSON.parse`d.
+ }
};
iframe.appendTo( "#qunit-fixture" );