From 2d688202b867341f12789d65d8f3d2373e2fdec1 Mon Sep 17 00:00:00 2001 From: "Glen E. Ivey" Date: Thu, 23 Jul 2009 09:58:51 -0700 Subject: [PATCH] Added test for, and implemented, body-onload event firing/handling. --- dist/env.js | 18 ++++++++++++++---- dist/env.rhino.js | 18 ++++++++++++++---- src/dom/document.js | 16 +++++++++++++--- src/event/uievent.js | 2 +- test/index.html | 13 +++++++++++++ test/test.js | 1 + test/unit/onload.js | 22 ++++++++++++++++++++++ 7 files changed, 78 insertions(+), 12 deletions(-) create mode 100644 test/unit/onload.js diff --git a/dist/env.js b/dist/env.js index bb321b93..baeba7a0 100644 --- a/dist/env.js +++ b/dist/env.js @@ -4165,9 +4165,19 @@ __extend__(DOMDocument.prototype, { _this._url = url; $info("Sucessfully loaded document at "+url); - var event = document.createEvent(); - event.initEvent("load"); - $w.dispatchEvent( event ); + + // first fire body-onload event + var event = document.createEvent(); + event.initEvent("load"); + try { // assume element, but just in case.... + $w.document.getElementsByTagName('body')[0]. + dispatchEvent( event ); + } catch (e){;} + + // then fire window-onload event + event = document.createEvent(); + event.initEvent("load"); + $w.dispatchEvent( event ); }; xhr.send(); }, @@ -7372,7 +7382,7 @@ $debug("Defining MouseEvent"); /* * mouseevent.js */ -$debug("Defining MouseEvent"); +$debug("Defining UiEvent"); /* * uievent.js */ diff --git a/dist/env.rhino.js b/dist/env.rhino.js index 9fb1e9fe..bc899287 100644 --- a/dist/env.rhino.js +++ b/dist/env.rhino.js @@ -4602,9 +4602,19 @@ __extend__(DOMDocument.prototype, { _this._url = url; $info("Sucessfully loaded document at "+url); - var event = document.createEvent(); - event.initEvent("load"); - $w.dispatchEvent( event ); + + // first fire body-onload event + var event = document.createEvent(); + event.initEvent("load"); + try { // assume element, but just in case.... + $w.document.getElementsByTagName('body')[0]. + dispatchEvent( event ); + } catch (e){;} + + // then fire window-onload event + event = document.createEvent(); + event.initEvent("load"); + $w.dispatchEvent( event ); }; xhr.send(); }, @@ -7809,7 +7819,7 @@ $debug("Defining MouseEvent"); /* * mouseevent.js */ -$debug("Defining MouseEvent"); +$debug("Defining UiEvent"); /* * uievent.js */ diff --git a/src/dom/document.js b/src/dom/document.js index cc7f07e8..830976fb 100644 --- a/src/dom/document.js +++ b/src/dom/document.js @@ -83,9 +83,19 @@ __extend__(DOMDocument.prototype, { _this._url = url; $info("Sucessfully loaded document at "+url); - var event = document.createEvent(); - event.initEvent("load"); - $w.dispatchEvent( event ); + + // first fire body-onload event + var event = document.createEvent(); + event.initEvent("load"); + try { // assume element, but just in case.... + $w.document.getElementsByTagName('body')[0]. + dispatchEvent( event ); + } catch (e){;} + + // then fire window-onload event + event = document.createEvent(); + event.initEvent("load"); + $w.dispatchEvent( event ); }; xhr.send(); }, diff --git a/src/event/uievent.js b/src/event/uievent.js index 753b030c..f948445c 100644 --- a/src/event/uievent.js +++ b/src/event/uievent.js @@ -1,4 +1,4 @@ -$debug("Defining MouseEvent"); +$debug("Defining UiEvent"); /* * uievent.js */ diff --git a/test/index.html b/test/index.html index ebef2e0c..c964b3eb 100644 --- a/test/index.html +++ b/test/index.html @@ -183,5 +183,18 @@

    + + + diff --git a/test/test.js b/test/test.js index 5fe5ad78..c16fe70b 100644 --- a/test/test.js +++ b/test/test.js @@ -30,6 +30,7 @@ window.onload = function(){ load( "test/unit/dom.js", "test/unit/window.js", + "test/unit/onload.js", "test/unit/parser.js", "test/unit/timer.js", //NOTE: keep this test last because Prototype pollutes diff --git a/test/unit/onload.js b/test/unit/onload.js new file mode 100644 index 00000000..a0c02f0f --- /dev/null +++ b/test/unit/onload.js @@ -0,0 +1,22 @@ +/* + * This file is a component of env.js, + * http://github.com/gleneivey/env-js/commits/master/README + * a Pure JavaScript Browser Environment + * Copyright 2009 John Resig, licensed under the MIT License + * http://www.opensource.org/licenses/mit-license.php + */ + + +module("window"); + +// depends on