Bug Tracker

Ticket #96 (closed feature: wontfix)

Opened 2 years ago

Last modified 1 year ago

Create IE 5.0 Support Plugin

Reported by: john Assigned to: anonymous
Type: feature Priority: major
Milestone: 1.0 Component: core
Version: 1.0 Keywords:
Cc: Needs:

Description

There needs to be a plugin that can be used to support IE 5.0

Attachments

Change History

Changed 2 years ago by alistair.potts@…

Here's what I use - it works for me, but I certainly don't use the full set of jquery methods. However, I think it covers most of the gaps.

/*
* Array Functionality
* script: array.js
* for: browsers not implementing the full array functionality of ECMA262-3
* by: liorean
* thanks to: beetle
*/
if(typeof Array.prototype.copy == 'undefined')Array.prototype.copy = function(a) {
   var i = 0, b = [];
   for(i; i < this.length; i++)b[i] = (typeof this[i].copy != 'undefined') ? this[i].copy() : this[i];
   return b}
;
if(typeof Array.prototype.concat == 'undefined')Array.prototype.concat = function(a) {
   var i = 0, b = this.copy();
   for(i; i < a.length; i++)b[b.length] = a[i];
   return b}
;
if(typeof Array.prototype.pop == 'undefined')Array.prototype.pop = function() {
   var b = this[this.length - 1];
   this.length--;
   return b}
;
if(typeof Array.prototype.push == 'undefined')Array.prototype.push = function() {
   var i = 0, b = this.length, a = arguments;
   for(i; i < a.length; i++)this[b + i] = a[i];
   return this.length}
;
if(typeof Array.prototype.shift == 'undefined')Array.prototype.shift = function() {
   var i = 0, b = this[0];
   for(i; i < this.length - 1; i++)this[i] = this[i + 1];
   this.length--;
   return b}
;
if(typeof Array.prototype.slice == 'undefined')Array.prototype.slice = function(a, c) {
   var i = 0, b, d = [];
   if(!c)c = this.length;
   if(c < 0)c = this.length + c;
   if(a < 0)a = this.length - a;
   if(c < a) {
      b = a;
      a = c;
      c = b}
   for(i; i < c - a; i++)d[i] = this[a + i];
   return d}
;
if(typeof Array.prototype.splice == 'undefined')Array.prototype.splice = function(a, c) {
   var i = 0, e = arguments, d = this.copy(), f = a;
   if(!c)c = this.length - a;
   for(i; i < e.length - 2; i++)this[a + i] = e[i + 2];
   for(a; a < this.length - c; a++)this[a + e.length - 2] = d[a - c];
   this.length -= c - e.length + 2;
   return d.slice(f, f + c)}
;
if(typeof Array.prototype.unshift == 'undefined')Array.prototype.unshift = function(a) {
   var b;
   this.reverse();
   b = this.push(a);
   this.reverse();
   return b}
;
if (typeof Function.apply != 'function') {
   Function.prototype.apply = function(o, a) {
      o.____apply = this;
      switch(((typeof a == 'object') && (a.length)) || 0) {
         case 0 : o.____apply();
         break;
         case 1 : o.____apply(a[0]);
         break;
         case 2 : o.____apply(a[0], a[1]);
         break;
         default : o.____apply(a[0], a[1], a[2]);
         break;
         }
      }
   ;
   }

Your mileage, as they say, may vary...

Changed 2 years ago by chx

I doubt this is major. IE 5.0 was released seven years ago or some such. It's market share is next to nothing now.

Changed 2 years ago by joern

  • status changed from new to closed
  • resolution set to wontfix

There were several attempts to this, which ended with this message by Alistair Potts: "OK, I've done some more work on this and it's a hopeless task. While you can rewrite the pseudo-apply function to work, IE5.0 can't seem to work out the length of the jquery object correctly.

But even if you get that working, IE5.0 doesn't support rudimentary RegExp?, e.g. "?=w".

It's time to give up. It's beyond a plugin to fix. John, if you read this, don't waste your time with an IE5.0 plugin, there is more important stuff to address!"

Note: See TracTickets for help on using tickets.