Author: max
Date: 2007-11-12 16:48:24 -0800 (Mon, 12 Nov 2007)
New Revision: 7224
Modified:
openlaszlo/trunk/lps/includes/source/embednew.js
Log:
Change 20071112-maxcarlson-P by [EMAIL PROTECTED] on 2007-11-12 16:01:00 PST
in /Users/maxcarlson/openlaszlo/trunk
for http://svn.openlaszlo.org/openlaszlo/trunk
Summary: Add APIs for attaching and removing browser event handlers
New Features:
Bugs Fixed: LPP-4715 - Include a method for attaching event handlers in the
platform javascript
Technical Reviewer: promanik
QA Reviewer: jcrowley
Doc Reviewer: (pending)
Documentation:
Release Notes:
Details: Add attachEventHandler: function(eventscope, eventname, callbackscope,
callbackname) and removeEventHandler: function(eventscope, eventname,
callbackscope, callbackname) APIs to listen for and remove browser events.
Tests: See LPP-4715
Modified: openlaszlo/trunk/lps/includes/source/embednew.js
===================================================================
--- openlaszlo/trunk/lps/includes/source/embednew.js 2007-11-13 00:43:49 UTC
(rev 7223)
+++ openlaszlo/trunk/lps/includes/source/embednew.js 2007-11-13 00:48:24 UTC
(rev 7224)
@@ -582,4 +582,59 @@
_sendMouseWheel: function(d) {
if (d != null) this.callMethod("LzKeys.__mousewheelEvent(" + d + ")");
}
+ ,/**
+ * Utility method for attaching DOM events
+ *
+ * @param eventscope:Object Scope to register the event, e.g. window
+ * @param eventname:String Event name to register in eventscope, e.g.
'load'
+ * @param callbackscope:Object Scope to receive the callback
+ * @param callbackname:String Method name to receive callback in
callbackscope
+ */
+ attachEventHandler: function(eventscope, eventname, callbackscope,
callbackname) {
+ if (! callbackscope || !callbackname || !callbackscope[callbackname]) {
+ return;
+ }
+ var s = eventscope + eventname + callbackscope + callbackname;
+ var handler = function() {
+ var a = window.event ? [window.event] : arguments;
+ callbackscope[callbackname].apply(callbackscope, a);
+ }
+ this._handlers[s] = handler;
+ //alert('add '+ s);
+ if(eventscope['addEventListener']) {
+ eventscope.addEventListener(eventname, handler, false);
+ return true;
+ } else if(eventscope['attachEvent']) {
+ return eventscope.attachEvent("on" + eventname, handler);
+ }
+ }
+ ,/**
+ * Utility method for removing DOM events
+ *
+ * @param eventscope:Object Scope to register the event, e.g. window
+ * @param eventname:String Event name to register in eventscope, e.g.
'load'
+ * @param callbackscope:Object Scope to receive the callback
+ * @param callbackname:String Method name to receive callback in
callbackscope
+ */
+ removeEventHandler: function(eventscope, eventname, callbackscope,
callbackname) {
+ var s = eventscope + eventname + callbackscope + callbackname;
+ var handler = this._handlers[s];
+ //console.log('remove', this._handlers);
+ this._handlers[s] = null;
+ if (! handler) return;
+ if(eventscope['removeEventListener']) {
+ eventscope.removeEventListener(eventname, handler, false);
+ return true;
+ } else if(eventscope['detachEvent']) {
+ return eventscope.detachEvent("on" + eventname, handler);
+ }
+ }
+ ,/** @access private */
+ _handlers: {}
+ ,/** @access private */
+ _cleanupHandlers: function() {
+ Lz._handlers = {};
+ //alert('_cleanupHandlers');
+ }
};
+Lz.attachEventHandler(window, 'beforeunload', Lz, '_cleanupHandlers');
_______________________________________________
Laszlo-checkins mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins