Skip to content
Snippets Groups Projects
Commit a531dd93 authored by Andreas Gohr's avatar Andreas Gohr
Browse files

minor javascript cleanup

darcs-hash:20060430182156-7ad00-1548636dbfaa9fc0b25c26e4121f763a485c2f9c.gz
parent 95dbfe57
No related branches found
No related tags found
No related merge requests found
...@@ -77,7 +77,9 @@ function js_out(){ ...@@ -77,7 +77,9 @@ function js_out(){
// load files // load files
foreach($files as $file){ foreach($files as $file){
echo "\n\n/* XXXXXXXXXX begin of $file XXXXXXXXXX */\n\n";
@readfile($file); @readfile($file);
echo "\n\n/* XXXXXXXXXX end of $file XXXXXXXXXX */\n\n";
} }
// init stuff // init stuff
...@@ -115,7 +117,9 @@ function js_out(){ ...@@ -115,7 +117,9 @@ function js_out(){
// load plugin scripts (suppress warnings for missing ones) // load plugin scripts (suppress warnings for missing ones)
foreach($plugins as $plugin){ foreach($plugins as $plugin){
echo "\n\n/* XXXXXXXXXX begin of $file XXXXXXXXXX */\n\n";
@readfile($plugin); @readfile($plugin);
echo "\n\n/* XXXXXXXXXX end of $file XXXXXXXXXX */\n\n";
} }
// load user script // load user script
......
// written by Dean Edwards, 2005 // written by Dean Edwards, 2005
// with input from Tino Zijdel // with input from Tino Zijdel
// http://dean.edwards.name/weblog/2005/10/add-event/ // http://dean.edwards.name/weblog/2005/10/add-event/
function addEvent(element, type, handler) { function addEvent(element, type, handler) {
// assign each event handler a unique ID // assign each event handler a unique ID
if (!handler.$$guid) handler.$$guid = addEvent.guid++; if (!handler.$$guid) handler.$$guid = addEvent.guid++;
// create a hash table of event types for the element // create a hash table of event types for the element
if (!element.events) element.events = {}; if (!element.events) element.events = {};
// create a hash table of event handlers for each element/event pair // create a hash table of event handlers for each element/event pair
var handlers = element.events[type]; var handlers = element.events[type];
if (!handlers) { if (!handlers) {
handlers = element.events[type] = {}; handlers = element.events[type] = {};
// store the existing event handler (if there is one) // store the existing event handler (if there is one)
if (element["on" + type]) { if (element["on" + type]) {
handlers[0] = element["on" + type]; handlers[0] = element["on" + type];
} }
} }
// store the event handler in the hash table // store the event handler in the hash table
handlers[handler.$$guid] = handler; handlers[handler.$$guid] = handler;
// assign a global event handler to do all the work // assign a global event handler to do all the work
element["on" + type] = handleEvent; element["on" + type] = handleEvent;
}; };
// a counter used to create unique IDs // a counter used to create unique IDs
addEvent.guid = 1; addEvent.guid = 1;
function removeEvent(element, type, handler) { function removeEvent(element, type, handler) {
// delete the event handler from the hash table // delete the event handler from the hash table
if (element.events && element.events[type]) { if (element.events && element.events[type]) {
delete element.events[type][handler.$$guid]; delete element.events[type][handler.$$guid];
} }
}; };
function handleEvent(event) { function handleEvent(event) {
var returnValue = true; var returnValue = true;
// grab the event object (IE uses a global event object) // grab the event object (IE uses a global event object)
event = event || fixEvent(window.event); event = event || fixEvent(window.event);
// get a reference to the hash table of event handlers // get a reference to the hash table of event handlers
var handlers = this.events[event.type]; var handlers = this.events[event.type];
// execute each event handler // execute each event handler
for (var i in handlers) { for (var i in handlers) {
this.$$handleEvent = handlers[i]; this.$$handleEvent = handlers[i];
if (this.$$handleEvent(event) === false) { if (this.$$handleEvent(event) === false) {
returnValue = false; returnValue = false;
} }
} }
return returnValue; return returnValue;
}; };
function fixEvent(event) { function fixEvent(event) {
// add W3C standard event methods // add W3C standard event methods
event.preventDefault = fixEvent.preventDefault; event.preventDefault = fixEvent.preventDefault;
event.stopPropagation = fixEvent.stopPropagation; event.stopPropagation = fixEvent.stopPropagation;
return event; return event;
}; };
fixEvent.preventDefault = function() { fixEvent.preventDefault = function() {
this.returnValue = false; this.returnValue = false;
}; };
fixEvent.stopPropagation = function() { fixEvent.stopPropagation = function() {
this.cancelBubble = true; this.cancelBubble = true;
}; };
/** /**
* Pseudo event handler to be fired after the DOM was parsed or * Pseudo event handler to be fired after the DOM was parsed or
* on window load at last. * on window load at last.
* *
* @author based upon some code by Dean Edwards * @author based upon some code by Dean Edwards
* @author Andreas Gohr * @author Andreas Gohr
* @see http://dean.edwards.name/weblog/2005/09/busted/ * @see http://dean.edwards.name/weblog/2005/09/busted/
*/ */
window.fireoninit = function() { window.fireoninit = function() {
// quit if this function has already been called // quit if this function has already been called
if (arguments.callee.done) return; if (arguments.callee.done) return;
// flag this function so we don't do the same thing twice // flag this function so we don't do the same thing twice
arguments.callee.done = true; arguments.callee.done = true;
if (typeof window.oninit == 'function') { if (typeof window.oninit == 'function') {
window.oninit(); window.oninit();
} }
}; };
/** /**
* This is a pseudo Event that will be fired by the above function * This is a pseudo Event that will be fired by the above function
* *
* Use addInitEvent to bind to this event! * Use addInitEvent to bind to this event!
* *
* @author Andreas Gohr * @author Andreas Gohr
*/ */
window.oninit = function(){}; window.oninit = function(){};
/** /**
* Bind a function to the window.init pseudo event * Bind a function to the window.init pseudo event
* *
* @author Simon Willison * @author Simon Willison
* @see http://simon.incutio.com/archive/2004/05/26/addLoadEvent * @see http://simon.incutio.com/archive/2004/05/26/addLoadEvent
*/ */
function addInitEvent(func) { function addInitEvent(func) {
var oldoninit = window.oninit; var oldoninit = window.oninit;
if (typeof window.oninit != 'function') { if (typeof window.oninit != 'function') {
window.oninit = func; window.oninit = func;
} else { } else {
window.oninit = function() { window.oninit = function() {
oldoninit(); oldoninit();
func(); func();
}; };
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment