გამარჯობა, ვინც 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;
};
}
იმედია გამოგადგებათ, მოვრჩი თესქს და მახათის იდეა არ მხიბლავს, ამიტომ ვეცადე პატარა სარგებელი მომეტანა ქვეყნისთვის