Jump to content

Fix Array indexOf() and Array splice() in JavaScript for IE8


Recommended Posts

გამარჯობა, ვინც JavaScript - ზე წერთ გეცოდინებათ indexOf() - ი და splice() - ი. ეს ორი მეთოდი არ მუშაობს ჩვენს მეგობარს IE8 - ზე. რამდენიმე დღის წინ დამჭირდა ამ ბაგის დაფიქსვა სამსახურში და დავწერ აქაც სოლუშენს იქნებ გამოადგეს ვინმეს.


მოკლედ, ეს ორი მეთოდი რომ აამუშაოთ IE8 - ზე დაგვჭირდება ორი ფუნქცია (რომელიც სამართლიანი იქნება მხოლოდ IE 8 - ზე და მის ქვევით)

 

 


if (document.documentMode && document.documentMode < 9)
{

  var originalSplice = Array.prototype.splice;


  Array.prototype.splice = function()
  {
    var arr = [], max = arguments.length;


    for (var i = 0; i < max; i++)
    {
      arr.push(arguments);
    }


    if (arr.length == 1)
    {
      arr.push(this.length - arr[0]);
    }

    return originalSplice.apply(this, arr);
  };


  Array.prototype.indexOf = function(elt)
  {
    var len = this.length >>> 0;


    var from = Number(arguments[1]) || 0;
    from = (from < 0) ? Math.ceil(from) : Math.floor(from);
    if (from < 0)
    {
      from += len;
    }


    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}

იმედია გამოგადგებათ, მოვრჩი თესქს და მახათის იდეა არ მხიბლავს, ამიტომ ვეცადე პატარა სარგებელი მომეტანა ქვეყნისთვის :D

  • Upvote 5
Link to comment
Share on other sites

  • Barca locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.