Monday, 23 January 2012

Help: addEventListener() for IE


code:
  if (document.getelementsbyclassname == undefined) {    document.getelementsbyclassname = function(classname)    {      var hasclassname = new regexp("(?:^|\\s)" + classname + "(?:$|\\s)");      var allelements = document.getelementsbytagname("*");      var results = [];        var element;       (var = 0; (element = allelements[i]) != null; i++) {        var elementclass = element.classname;        if (elementclass && elementclass.indexof(classname) != -1 && hasclassname.test(elementclass)) {          results.push(element);        }        return results;      }    }  }    function sortable() {    var sortable = document.getelementsbyclassname('sortable');    for(var in sortable) {      element = sortable[i];      if (element.id != undefined) {        var sort_id = element.id;        document.getelementbyid(sort_id).addeventlistener('click', sort, false);      }    }  }    function sort() {    if (last_sorted == this.id + "desc") {      last_sorted = this.id + "asc";      order = this.id + " asc";      if (search_temp != undefined) {        my_table(limit, offset, order, search_temp);      } else {        my_table(limit, offset, order, filter);      }    } else {      last_sorted = this.id + "desc";      order = this.id + " desc";      if (search_temp != undefined) {        my_table(limit, offset, order, search_temp);      } else {        my_table(limit, offset, order, filter);      }    }  }  
this wee bit of code part of javascript getting table jsonp data. works on safari, opera, chrome, firefox , mobile safari.

problem can't working on ie 8 minimum supported browser need support, while aware jquery can own 'joy' doing pure javascript has proved clean sailing in getting jsonp cross domain, searching, paginating etc.

appreciated, believe attachevent() way go not support 'this'.
 

i've tried adding.
code:
  element.prototype.addanevent = function(name, funct){     if(this.addeventlistener) // works in normal browsers...     {       this.addeventlistener(name,funct, false);     }     else if(this.attachevent){       var _this = this;       this.attachevent("on"+name, function(){funct.apply(_this);});       //where value of "this" in funct should point "element"     }  };  
which changes sort() following
code:
  function sort() {    alert('ho');    if (last_sorted == this.id + "desc") {      last_sorted = this.id + "asc";      order = this.id + " asc";      if (search_temp != undefined) {        my_table(limit, offset, order, search_temp);      } else {        my_table(limit, offset, order, filter);      }    } else {      last_sorted = this.id + "desc";      order = this.id + " desc";      if (search_temp != undefined) {        my_table(limit, offset, order, search_temp);      } else {        my_table(limit, offset, order, filter);      }    }  }  
now research should work seems work on modern browsers, ie8 not register clicks alert have set never called.
 


Forums Special Interests Web Design and Development


  • iPhone
  • Mac OS & System Software
  • iPad
  • Apple Watch
  • Notebooks
  • iTunes
  • Apple ID
  • iCloud
  • Desktop Computers
  • Apple Music
  • Professional Applications
  • iPod
  • iWork
  • Apple TV
  • iLife
  • Wireless

No comments:

Post a Comment