powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [JS] Stack overflow at line 0
10 сообщений из 10, страница 1 из 1
[JS] Stack overflow at line 0
    #38606207
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тестирую значит маленький скриптик, который при вводе 1, 2, 3 с клавиатуры заменяет их на A, B, C

Во всех браузерах отлично, а в IE6 при каждом нажатии клавиши выкидывает окошко: Stack overflow at line: 0

Вот код примера:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<!DOCTYPE html>
<html>
<body>

<input id="m" type="text" size="60" width="300" value="" onInput="translite(this.value);" onpropertychange="translite(this.value);">

<script type="text/javascript">
function translite(str){
var arr={'1':'A', '2':'B' , '3':'C'};

	for (var val in arr)
	str = str.replace(new RegExp(val, 'g'), arr[val]);
   	document.getElementById('m').value=str;   	
}
</script> 

</body>
</html>
...
Рейтинг: 0 / 0
[JS] Stack overflow at line 0
    #38606228
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GororТестирую значит маленький скриптик, который при вводе 1, 2, 3 с клавиатуры заменяет их на A, B, C

Во всех браузерах отлично, а в IE6 при каждом нажатии клавиши выкидывает окошко: Stack overflow at line: 0

Вот код примера:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<!DOCTYPE html>
<html>
<body>

<input id="m" type="text" size="60" width="300" value="" onInput="translite(this.value);" onpropertychange="translite(this.value);">

<script type="text/javascript">
function translite(str){
var arr={'1':'A', '2':'B' , '3':'C'};

	for (var val in arr)
	str = str.replace(new RegExp(val, 'g'), arr[val]);
   	document.getElementById('m').value=str;   	
}
</script> 

</body>
</html>



Значит логика поведения onpropertychange в браузерах разная видимо (сам не знаю, никогда не пользовал)... Как по мне, так это банальное рекурсивное зацикливание, а значит document.getElementById('m').value=str; в ie6 вызывает событие onpropertychange что порождает зацикливание "в глубину" :) В других же браузерах видимо эта команда не вызывает это событие, или же вызывает только тогда, когда value был реально изменён, а не просто была выполнена операция присвоения.
...
Рейтинг: 0 / 0
[JS] Stack overflow at line 0
    #38606385
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрКак по мне, так это банальное рекурсивное зацикливание


И как можно это исправить, обойти?
...
Рейтинг: 0 / 0
[JS] Stack overflow at line 0
    #38606392
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GororПрограмёрКак по мне, так это банальное рекурсивное зацикливание


И как можно это исправить, обойти?

Если по правильному, то хорошо бы отказаться от IE6 вообще :)
А так, можно попробовать например document.getElementById('m').value=str; заменить на
Код: javascript
1.
2.
var el = document.getElementById('m');
if (el.value!=str) el.value=str;



Это прервёт вызовы в момент, когда менять уже будет нечего. Вариант не идеальный (так как лишние вызовы всё же будут), но зацикливания быть не должно.
...
Рейтинг: 0 / 0
[JS] Stack overflow at line 0
    #38606401
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр
Если по правильному, то хорошо бы отказаться от IE6 вообще :)
А так, можно попробовать например document.getElementById('m').value=str; заменить на
Код: javascript
1.
2.
var el = document.getElementById('m');
if (el.value!=str) el.value=str;



Это прервёт вызовы в момент, когда менять уже будет нечего.


Работает! Спасибо!


ПрограмёрВариант не идеальный (так как лишние вызовы всё же будут), но зацикливания быть не должно.

А в "идеальном" варианте, как бы это выглядело?
...
Рейтинг: 0 / 0
[JS] Stack overflow at line 0
    #38606408
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goror,

как я говорил, для IE6 идеальных вариантов нету :) Идеальный вариант - отказаться от этого недобраузера
...
Рейтинг: 0 / 0
[JS] Stack overflow at line 0
    #38606412
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GororА в "идеальном" варианте, как бы это выглядело?
Код: sql
1.
2.
3.
!--[if IE 6]>
You are using IE 6!
<![endif]--> 
...
Рейтинг: 0 / 0
[JS] Stack overflow at line 0
    #38606413
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрGoror,

как я говорил, для IE6 идеальных вариантов нету :) Идеальный вариант - отказаться от этого недобраузера

Ок! Спасибо ещё раз!



Ну я им (Ослом IE)) почти и не пользуюсь! Но просто он почти во вcех win XP, как браузер по умолчанию идёт, и как то некрасиво его игнорировать и обходить всегда стороной)
...
Рейтинг: 0 / 0
[JS] Stack overflow at line 0
    #38606417
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GororПрограмёрGoror,

как я говорил, для IE6 идеальных вариантов нету :) Идеальный вариант - отказаться от этого недобраузера

Ок! Спасибо ещё раз!



Ну я им (Ослом IE)) почти и не пользуюсь! Но просто он почти во вcех win XP, как браузер по умолчанию идёт, и как то некрасиво его игнорировать и обходить всегда стороной)

Уже даже IE7 уходит из обихода... А сейчас из IE самые распространённые это ie9, ie10 и ie11. Так что на остальные можно понемножку забивать ;)
...
Рейтинг: 0 / 0
[JS] Stack overflow at line 0
    #38606440
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрУже даже IE7 уходит из обихода... А сейчас из IE самые распространённые это ie9, ie10 и ie11. Так что на остальные можно понемножку забивать ;)

Можно конечно "забить" болт) Но всё таки приятно, когда сайт работает одинаково во всех браузерах, в том числе и в iE!)

По сути уже мало таких сайтов, но те что есть, как пример, то что и на ослике можно ездить)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [JS] Stack overflow at line 0
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]