Changeset 7259
- Timestamp:
- 07/31/07 23:43:09 (1 year ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
spinoffs/prototype/branches/1-6-0-events/src/dom.js
r7258 r7259 23 23 /*--------------------------------------------------------------------------*/ 24 24 25 (function() { 26 var element = this.Element; 27 this.Element = function(tagName, attributes) { 28 attributes = attributes || {}; 29 tagName = tagName.toLowerCase(); 30 var cache = Element.cache; 31 if (Prototype.Browser.IE && attributes.name) { 32 tagName = '<' + tagName + ' name="' + attributes.name + '">'; 33 delete attributes.name; 34 return Element.writeAttribute(document.createElement(tagName), attributes); 35 } 36 if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); 37 return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); 38 }; 39 Object.extend(this.Element, element || {}); 40 }).call(window); 41 42 Object.extend(Element, { 25 if (!window.Node) 26 var Node = { }; 27 28 Object.extend(Node, { 43 29 ELEMENT_NODE: 1, 44 30 ATTRIBUTE_NODE: 2, … … 55 41 }); 56 42 57 Element.cache = {}; 43 (function() { 44 var element = this.Element; 45 this.Element = function(tagName, attributes) { 46 attributes = attributes || { }; 47 tagName = tagName.toLowerCase(); 48 var cache = Element.cache; 49 if (Prototype.Browser.IE && attributes.name) { 50 tagName = '<' + tagName + ' name="' + attributes.name + '">'; 51 delete attributes.name; 52 return Element.writeAttribute(document.createElement(tagName), attributes); 53 } 54 if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); 55 return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); 56 }; 57 Object.extend(this.Element, element || { }); 58 }).call(window); 59 60 Element.cache = { }; 58 61 59 62 Element.Methods = { … … 143 146 element = $(element); 144 147 if (Object.isElement(wrapper)) 145 $(wrapper).writeAttribute(attributes || { });148 $(wrapper).writeAttribute(attributes || { }); 146 149 else if (typeof wrapper == 'string') wrapper = new Element(wrapper, attributes); 147 150 else wrapper = new Element('div', wrapper); … … 275 278 writeAttribute: function(element, name, value) { 276 279 element = $(element); 277 var attributes = { }, t = Element._attributeTranslations.write;280 var attributes = { }, t = Element._attributeTranslations.write; 278 281 279 282 if (typeof name == 'object') attributes = name; … … 591 594 offsetTop: 0, 592 595 offsetLeft: 0 593 }, arguments[2] || { });596 }, arguments[2] || { }); 594 597 595 598 // find page position of source … … 669 672 htmlFor: 'for' 670 673 }, 671 values: { }674 values: { } 672 675 } 673 676 }; … … 874 877 element.appendChild(n); 875 878 element.removeChild(n); 876 } catch (e) { }879 } catch (e) { } 877 880 878 881 return element; … … 1025 1028 }; 1026 1029 1027 Element.Methods.ByTag = { };1030 Element.Methods.ByTag = { }; 1028 1031 1029 1032 Object.extend(Element, Element.Methods); … … 1031 1034 if (!Prototype.BrowserFeatures.ElementExtensions && 1032 1035 document.createElement('div').__proto__) { 1033 window.HTMLElement = { };1036 window.HTMLElement = { }; 1034 1037 window.HTMLElement.prototype = document.createElement('div').__proto__; 1035 1038 Prototype.BrowserFeatures.ElementExtensions = true; … … 1040 1043 return Prototype.K; 1041 1044 1042 var Methods = { }, ByTag = Element.Methods.ByTag;1045 var Methods = { }, ByTag = Element.Methods.ByTag; 1043 1046 1044 1047 var extend = Object.extend(function(element) { … … 1099 1102 } 1100 1103 1101 if (!tagName) Object.extend(Element.Methods, methods || { });1104 if (!tagName) Object.extend(Element.Methods, methods || { }); 1102 1105 else { 1103 1106 if (Object.isArray(tagName)) tagName.each(extend); … … 1108 1111 tagName = tagName.toUpperCase(); 1109 1112 if (!Element.Methods.ByTag[tagName]) 1110 Element.Methods.ByTag[tagName] = { };1113 Element.Methods.ByTag[tagName] = { }; 1111 1114 Object.extend(Element.Methods.ByTag[tagName], methods); 1112 1115 } … … 1142 1145 if (window[klass]) return window[klass]; 1143 1146 1144 window[klass] = { };1147 window[klass] = { }; 1145 1148 window[klass].prototype = document.createElement(tagName).__proto__; 1146 1149 return window[klass]; … … 1164 1167 1165 1168 if (Element.extend.refresh) Element.extend.refresh(); 1166 Element.cache = { };1169 Element.cache = { }; 1167 1170 }; spinoffs/prototype/branches/1-6-0-events/src/event.js
r7258 r7259 40 40 element: function(event) { 41 41 var node = event.target; 42 return Element.extend(node.nodeType == Element.TEXT_NODE ? node.parentNode : node);42 return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node); 43 43 }, 44 44 … … 72 72 73 73 Event.extend = (function() { 74 var methods = Object.keys(Event.Methods).inject({ }, function(m ethods, name) {75 m ethods[name] = Event.Methods[name].methodize();76 return m ethods;74 var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { 75 m[name] = Event.Methods[name].methodize(); 76 return m; 77 77 }); 78 78 … … 160 160 for (var id in cache) 161 161 for (var eventName in cache[id]) 162 wrappers[eventName] = null;162 cache[id][eventName] = null; 163 163 } 164 164 spinoffs/prototype/branches/1-6-0-events/test/unit/event.html
r7258 r7259 80 80 81 81 function outerObserver(event) { 82 assertEqual(span, event.element()); 83 fired = true; 82 fired = span == event.element(); 84 83 } 85 84 … … 100 99 assert(!stopped); 101 100 assert(fired); 101 102 outer.stopObserving("somethingHappened", outerObserver); 102 103 }}, 103 104 … … 107 108 span.fire("somethingHappened"); 108 109 assertEqual(Event.Methods.stop.methodize(), event.stop); 110 span.stopObserving("somethingHappened", observer); 109 111 }}, 110 112