Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 7259

Show
Ignore:
Timestamp:
07/31/07 23:43:09 (1 year ago)
Author:
sam
Message:

prototype: Make the new event tests pass in IE. Move the node type constants back into window.Node.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • spinoffs/prototype/branches/1-6-0-events/src/dom.js

    r7258 r7259  
    2323/*--------------------------------------------------------------------------*/ 
    2424 
    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, { 
     25if (!window.Node) 
     26  var Node = { }; 
     27   
     28Object.extend(Node, { 
    4329  ELEMENT_NODE: 1, 
    4430  ATTRIBUTE_NODE: 2, 
     
    5541}); 
    5642 
    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 
     60Element.cache = { }; 
    5861 
    5962Element.Methods = { 
     
    143146    element = $(element); 
    144147    if (Object.isElement(wrapper)) 
    145       $(wrapper).writeAttribute(attributes || {}); 
     148      $(wrapper).writeAttribute(attributes || { }); 
    146149    else if (typeof wrapper == 'string') wrapper = new Element(wrapper, attributes); 
    147150    else wrapper = new Element('div', wrapper); 
     
    275278  writeAttribute: function(element, name, value) { 
    276279    element = $(element); 
    277     var attributes = {}, t = Element._attributeTranslations.write; 
     280    var attributes = { }, t = Element._attributeTranslations.write; 
    278281     
    279282    if (typeof name == 'object') attributes = name; 
     
    591594      offsetTop:  0, 
    592595      offsetLeft: 0 
    593     }, arguments[2] || {}); 
     596    }, arguments[2] || { }); 
    594597 
    595598    // find page position of source 
     
    669672      htmlFor:   'for'       
    670673    },  
    671     values: {
     674    values: {
    672675  } 
    673676}; 
     
    874877        element.appendChild(n); 
    875878        element.removeChild(n); 
    876       } catch (e) {
     879      } catch (e) {
    877880     
    878881    return element; 
     
    10251028}; 
    10261029 
    1027 Element.Methods.ByTag = {}; 
     1030Element.Methods.ByTag = { }; 
    10281031 
    10291032Object.extend(Element, Element.Methods); 
     
    10311034if (!Prototype.BrowserFeatures.ElementExtensions &&  
    10321035    document.createElement('div').__proto__) { 
    1033   window.HTMLElement = {}; 
     1036  window.HTMLElement = { }; 
    10341037  window.HTMLElement.prototype = document.createElement('div').__proto__; 
    10351038  Prototype.BrowserFeatures.ElementExtensions = true; 
     
    10401043    return Prototype.K; 
    10411044   
    1042   var Methods = {}, ByTag = Element.Methods.ByTag; 
     1045  var Methods = { }, ByTag = Element.Methods.ByTag; 
    10431046   
    10441047  var extend = Object.extend(function(element) { 
     
    10991102  } 
    11001103   
    1101   if (!tagName) Object.extend(Element.Methods, methods || {});   
     1104  if (!tagName) Object.extend(Element.Methods, methods || { });   
    11021105  else { 
    11031106    if (Object.isArray(tagName)) tagName.each(extend); 
     
    11081111    tagName = tagName.toUpperCase(); 
    11091112    if (!Element.Methods.ByTag[tagName]) 
    1110       Element.Methods.ByTag[tagName] = {}; 
     1113      Element.Methods.ByTag[tagName] = { }; 
    11111114    Object.extend(Element.Methods.ByTag[tagName], methods); 
    11121115  } 
     
    11421145    if (window[klass]) return window[klass]; 
    11431146     
    1144     window[klass] = {}; 
     1147    window[klass] = { }; 
    11451148    window[klass].prototype = document.createElement(tagName).__proto__; 
    11461149    return window[klass]; 
     
    11641167   
    11651168  if (Element.extend.refresh) Element.extend.refresh(); 
    1166   Element.cache = {}; 
     1169  Element.cache = { }; 
    11671170}; 
  • spinoffs/prototype/branches/1-6-0-events/src/event.js

    r7258 r7259  
    4040  element: function(event) { 
    4141    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); 
    4343  }, 
    4444 
     
    7272 
    7373Event.extend = (function() { 
    74   var methods = Object.keys(Event.Methods).inject({ }, function(methods, name) { 
    75     methods[name] = Event.Methods[name].methodize(); 
    76     return methods
     74  var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { 
     75    m[name] = Event.Methods[name].methodize(); 
     76    return m
    7777  }); 
    7878   
     
    160160    for (var id in cache) 
    161161      for (var eventName in cache[id]) 
    162         wrappers[eventName] = null; 
     162        cache[id][eventName] = null; 
    163163  } 
    164164   
  • spinoffs/prototype/branches/1-6-0-events/test/unit/event.html

    r7258 r7259  
    8080 
    8181      function outerObserver(event) { 
    82         assertEqual(span, event.element()); 
    83         fired = true; 
     82        fired = span == event.element(); 
    8483      } 
    8584       
     
    10099      assert(!stopped); 
    101100      assert(fired); 
     101       
     102      outer.stopObserving("somethingHappened", outerObserver); 
    102103    }}, 
    103104     
     
    107108      span.fire("somethingHappened"); 
    108109      assertEqual(Event.Methods.stop.methodize(), event.stop); 
     110      span.stopObserving("somethingHappened", observer); 
    109111    }}, 
    110112