|
|
|
Ajax: подгрузка JS-скриптов. Как сделать чтобы они выполнились?
|
|||
|---|---|---|---|
|
#18+
Привет всем. При использовании AJAX, столкнулся с тем, что, если на возвращаемой в асинхронном ответе странице присутствуют скрипты в виде тегов <script>...</script> то они не выполняются. Это такая особенность работы скриптов, либо есть какая то возможность их выполнить после загрузки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 12:19 |
|
||
|
Ajax: подгрузка JS-скриптов. Как сделать чтобы они выполнились?
|
|||
|---|---|---|---|
|
#18+
unicornmirage, Они выполняются (!всегда по мере появления на странице). Проверь, пожалуйста, а если чего не работает - давай сюда и поподробнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 14:43 |
|
||
|
Ajax: подгрузка JS-скриптов. Как сделать чтобы они выполнились?
|
|||
|---|---|---|---|
|
#18+
А, понял (подозреваю) в чём дело. Кусочек кода давай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 14:48 |
|
||
|
Ajax: подгрузка JS-скриптов. Как сделать чтобы они выполнились?
|
|||
|---|---|---|---|
|
#18+
ShSergeА, понял (подозреваю) в чём дело. Кусочек кода давай. Использую для AJAX библиотеку prototype-1.6.0.3. На странице, после того как она загрузилась в браузере, кликаю на кнопку, вызываю обработчик: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Так вот, асинхронный запрос потом поступает на сервер по адресу var url = "http://localhost:8080/someController"; , который возвращает такой фрагмент HTML-кода: Код: plaintext 1. 2. 3. Этот фрагмент помещается внутрь div, указанного в переменной var dynamicDivId = "someDynamicDivId"; Ответ приходит и помещается успешно. Но вот функция в тегах <script> не выполняется. Если выполнить обычный запрос к контроллеру var url = "http://localhost:8080/someController"; , то функция в <script> выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 15:13 |
|
||
|
Ajax: подгрузка JS-скриптов. Как сделать чтобы они выполнились?
|
|||
|---|---|---|---|
|
#18+
unicornmirage, Беру слова обратно (насчёт "догадываюсь" - о другом подумал). Всё должно работать. Только не понятно, что такое "фрагмент помещается внутрь div"? Я, надеюсь, типа аппендЧилд, а не присваиванием иннерХТМЛ, что есть неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 15:31 |
|
||
|
Ajax: подгрузка JS-скриптов. Как сделать чтобы они выполнились?
|
|||
|---|---|---|---|
|
#18+
ShSergeТолько не понятно, что такое "фрагмент помещается внутрь div"? Я, надеюсь, типа аппендЧилд, а не присваиванием иннерХТМЛ, что есть неправильно. Не могу ничего сказать по этому поводу, этим занимается функция Код: plaintext 1. 2. 3. 4. 5. 6. Надо глянуть в исходники её. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 15:51 |
|
||
|
Ajax: подгрузка JS-скриптов. Как сделать чтобы они выполнились?
|
|||
|---|---|---|---|
|
#18+
Всё. Разобрался почему! Оказывается в prototype по-умолчанию Ajax.Updater фильтрует скрипты ( Вот тут об этом сказано ). Чтобы мой пример заработал, достаточно добавить в функцию параметр evalScript: true ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 16:10 |
|
||
|
Ajax: подгрузка JS-скриптов. Как сделать чтобы они выполнились?
|
|||
|---|---|---|---|
|
#18+
unicornmirage, Подозреваю, что там - присваивание, поэтому и не работает. Может я и вру, потому что не пользовался прототипом. Можно попробовать ручками написать аппендЧилд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 16:11 |
|
||
|
Ajax: подгрузка JS-скриптов. Как сделать чтобы они выполнились?
|
|||
|---|---|---|---|
|
#18+
ShSergeunicornmirage, Подозреваю, что там - присваивание, поэтому и не работает. Может я и вру, потому что не пользовался прототипом. Можно попробовать ручками написать аппендЧилд. Заглянул внутрь prototype, там есть такая строка в фрагменте, где как раз происходит обновление содержимого дива: Код: plaintext 1. Я так понимаю - там просто все элементы <script> просто фильтруются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 16:13 |
|
||
|
Ajax: подгрузка JS-скриптов. Как сделать чтобы они выполнились?
|
|||
|---|---|---|---|
|
#18+
unicornmirageВсё. Разобрался почему! Оказывается в prototype по-умолчанию Ajax.Updater фильтрует скрипты ( Вот тут об этом сказано ). Чтобы мой пример заработал, достаточно добавить в функцию параметр evalScript: true Это - замечательно, что всё стало ясно. На то и форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 16:15 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=36162166&tid=1454346]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 448ms |

| 0 / 0 |
