Проблема с js в IE
May. 18th, 2006 11:45 am![[identity profile]](https://www.dreamwidth.org/img/silk/identity/openid.png)
![[community profile]](https://www.dreamwidth.org/img/silk/identity/community.png)
Даже не знаю в какое сообщество написать.
Вроде и не ява и не сисадминский вопрос и не по железу.
В общем, если знаете - подскажите плиз по теме или название сообщества куда обратиться.
Для динамического формирования контента используется следующая процедура.
Создается пустой элемент <script>, затем из другого скрипта устанавливается его src (ссылка на внешний скрипт)
и потом вызывается функция которая в этом самом внешнем скрипте определена.
Примерно так:
Предполагается что после ввода текста и кликания на любом месте страницы будет определен src для скрипта с id="dyn", в котором будет определена someScriptFunction (содержимое которой зависит от параметров) и затем эта функция будет как-то использована.
Например, для вывода какого-либо динамического списка без перезагрузки страницы.
В Opera 8 это все работает без проблем.
На этапе изменения src у элемента <script> подгружается новый js, сразу после подгрузки доступна эта функция, сгенерированная с правильными параметрами.
В общем, все как предполагается.
А вот в Internet Explorer - проблема.
При первом обращении пишет ошибку, при последующих - использует ту функцию которая была подгружена раньше.
Такое впечатление что перед тем как начать вызывать javaScript эксплорер фиксирует текущее состояние js-кода и в процессе исполнения "текущей сессии" js его не изменяет.
Потом - изменяет, и при следующем обращении мы имеем уже дело с js, в который подгружена функция, но с предыдущим значением параметра.
И - вопрос.
Можно ли как-нибудь из js заставить IE обновлять содержимое скрипта в текущей "сессии выполнения"?
Да, еще - только что обнаружил.
Если после изменения src выдавать alert( "something" ); то функция благополучно подгружается...
Но это не выход - надо чтобы динамически менялось без вопросов к юзеру...
Вроде и не ява и не сисадминский вопрос и не по железу.
В общем, если знаете - подскажите плиз по теме или название сообщества куда обратиться.
Для динамического формирования контента используется следующая процедура.
Создается пустой элемент <script>, затем из другого скрипта устанавливается его src (ссылка на внешний скрипт)
и потом вызывается функция которая в этом самом внешнем скрипте определена.
Примерно так:
<script id="dyn"></script> <script> finction click( val ){ document.getElementById( "dyn" ).src = "/someScript.js?param=" + val; document.write( someScriptFunction() ); } </script> <input type="text" onBlur="click( this.value );">
Предполагается что после ввода текста и кликания на любом месте страницы будет определен src для скрипта с id="dyn", в котором будет определена someScriptFunction (содержимое которой зависит от параметров) и затем эта функция будет как-то использована.
Например, для вывода какого-либо динамического списка без перезагрузки страницы.
В Opera 8 это все работает без проблем.
На этапе изменения src у элемента <script> подгружается новый js, сразу после подгрузки доступна эта функция, сгенерированная с правильными параметрами.
В общем, все как предполагается.
А вот в Internet Explorer - проблема.
При первом обращении пишет ошибку, при последующих - использует ту функцию которая была подгружена раньше.
Такое впечатление что перед тем как начать вызывать javaScript эксплорер фиксирует текущее состояние js-кода и в процессе исполнения "текущей сессии" js его не изменяет.
Потом - изменяет, и при следующем обращении мы имеем уже дело с js, в который подгружена функция, но с предыдущим значением параметра.
И - вопрос.
Можно ли как-нибудь из js заставить IE обновлять содержимое скрипта в текущей "сессии выполнения"?
Да, еще - только что обнаружил.
Если после изменения src выдавать alert( "something" ); то функция благополучно подгружается...
Но это не выход - надо чтобы динамически менялось без вопросов к юзеру...