aboutsummaryrefslogtreecommitdiffstats
path: root/test/unit
diff options
context:
space:
mode:
authorOleg <markelog@gmail.com>2012-10-21 22:17:46 +0400
committerDave Methvin <dave.methvin@gmail.com>2012-10-21 20:14:05 -0400
commit696c553053c24909dfc8feddff7b73d18f5abb2a (patch)
tree1c11a6a92cdd5304a2c82836d7dd8bb26de2d1db /test/unit
parent2decd0510d8bd70fe7bbae9ebbacc49717376cfd (diff)
downloadjquery-696c553053c24909dfc8feddff7b73d18f5abb2a.tar.gz
jquery-696c553053c24909dfc8feddff7b73d18f5abb2a.zip
Fix failing tests for beforeunload in Safari 5.0. Close gh-1002.
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/event.js40
1 files changed, 28 insertions, 12 deletions
diff --git a/test/unit/event.js b/test/unit/event.js
index 727e20ac2..1c95aff38 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -1372,20 +1372,30 @@ test("Submit event can be stopped (#11049)", function() {
// Test beforeunload event only if it supported (i.e. not Opera)
if ( window.onbeforeunload === null ) {
asyncTest("on(beforeunload)", 4, function() {
- var doc,
+ var win,
forIE6 = 0,
+ fired = false,
iframe = jQuery("<iframe src='data/iframe.html' />");
iframe.appendTo("#qunit-fixture").one( "load", function() {
- doc = iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument;
+ win = this.contentWindow || this.contentDocument;
- jQuery( doc ).on( "beforeunload", function() {
+ jQuery( win ).on( "beforeunload", function() {
+ fired = true;
ok( true, "beforeunload event is fired" );
});
- strictEqual( doc.onbeforeunload, null, "onbeforeunload property on window object still equals null" );
+ strictEqual( win.onbeforeunload, null, "onbeforeunload property on window object still equals null" );
- jQuery( doc ).on( "beforeunload", function() {
+ // In old Safari beforeunload event will not fire on iframes
+ jQuery( win ).on( "unload", function() {
+ if ( !fired ) {
+ ok( true, "This is suppose to be true only in old Safari" );
+ checker();
+ }
+ });
+
+ jQuery( win ).on( "beforeunload", function() {
// On iframe in IE6 beforeunload event will not fire if event is binded through window object,
// nevertheless, test should continue
@@ -1396,7 +1406,7 @@ if ( window.onbeforeunload === null ) {
});
});
- doc.onbeforeunload = function() {
+ win.onbeforeunload = function() {
if ( !forIE6 ) {
forIE6++;
checker();
@@ -1408,21 +1418,27 @@ if ( window.onbeforeunload === null ) {
iframe = jQuery("<iframe src='data/iframe.html' />");
iframe.appendTo("#qunit-fixture").one( "load", function() {
- doc = iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument;
+ win = iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument;
- jQuery( doc ).on( "beforeunload", function() {
- strictEqual( doc.onbeforeunload, null, "Event handler is fired, even when onbeforeunload property on window is nulled" );
+ jQuery( win ).on( "beforeunload", function() {
+ strictEqual( win.onbeforeunload, null, "Event handler is fired, even when onbeforeunload property on window is nulled" );
start();
});
- doc.onbeforeunload = null;
+ jQuery( win ).on( "unload", function() {
+ if ( !fired ) {
+ jQuery( win ).trigger("beforeunload");
+ }
+ })
+
+ win.onbeforeunload = null;
- doc.location.reload();
+ win.location.reload();
});
}
- doc.location.reload();
+ win.location.reload();
});
});
}