Matre,
Дело не в браузерах, дело
в алгоритме. Он работает неверно. Проверьте на любых примерах. Например:
String.prototype.index = function (str) {
var j = -1, c = false, L1 = this.length, L2 = str.length - 1;
for (var i = 0; i < L1; i++) {
if (str.charAt(0) === this.charAt(i))
c = true, j = i;
if (c && i === j + L2)
return j;
if (c && str.charAt(i) != this.charAt(i + j))
c = false;
}
return j;
};
// Где ищем
var s = 'A';
// Что ищем
var t = 'AB';
alert([
'В строке "' + s + '"',
'ищем "' + t + '"',
'и находим: ' + s.index(t), // Должно быть -1, показывает 0
'хотя там быть не должно: ' + s.indexOf(t) // Показывает -1
].join('\n'));