У меня есть строка, которую нужно разделить на три символа подчеркивания. Пример строки может быть:Разделить строку на массив с Javascript в IE8
var stringItemsPlanner = "Hello this___is a string___which___needs splitting into___an array";
Поэтому я использую функцию Split(). Хорошо во всем, кроме IE8 (и, вероятно, 7 тоже, но не пробовали), который дает ошибку «Объект не поддерживает это свойство или метод», если строка не содержит этих символов. Так что я нашел еще один пост, который сказал, чтобы проверить, что подчеркивание символов появляются в строке перед расщеплением, так что я это сделать:
if (stringItemsPlanner.indexOf('___') == -1){
arrItemsPlanner = [];
}else{
arrItemsPlanner = stringItemsPlanner.split('___');
}
Но теперь эта ошибка тоже, потому что, по-видимому IE8 не поддерживает «IndexOf».
После долгих поисков я пытался добавить некоторый код в верхней части моего сценария, чтобы действовать в качестве «polyfil» для этого метода:
if (!Array.prototype.indexOf){
Array.prototype.indexOf = function(elt /*, from*/){
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;
};
}
}
}
Но до сих пор нет радости.
Я сейчас пережил разочарование и не могу думать о каком-либо другом способе заставить эту простую работу работать.
Может ли кто-нибудь пролить свет на это или подумать об альтернативном способе безопасного разделения строки на массив таким образом, чтобы работать кросс-браузер? Это должно быть просто, но я просто не могу думать прямо сейчас.
Спасибо всем!
Вы полностью уверены, что 'split' не работает в IE8? (Я просто попробовал его в этом «IE8 режиме» в IE9, также в «режиме IE7», и он кажется прекрасным) – cambraca
split() должен поддерживаться в IE8 – kinakuta
Извините, я прояснил это сейчас. Split поддерживается IE8, но вызывает исключение, если символы не находятся в разделяемой строке - что может произойти в моем случае и является причиной этой проблемы. – Dan