![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
kkorsakoff |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 14 |
Использую AJAX, с его помощью подгружаю и устанавливаю новое содержимое некоторого <div>'a.
Хочу установить вызов некоторой функции по таймеру (setTimeout(...)), но оказывается если внедрять <script> внутри нового подгружаемого html'a, то он не работает. То есть не запускается вообще. Похоже можно только в "основной" странице вставлять скрипты. Может у кого-то была похожая проблема и/или есть её решение? |
|||
|
||||
JSman |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 279 Регистрация: 10.7.2006 Репутация: нет Всего: 4 |
у меня даже регулярные выражения отказывались работать во внедренной странице....
попробуй так. пусть таймер есть в главном окне, а ссылку на функцию нового контента передавай по событию загрузки. код нужен? |
|||
|
||||
Red Wind |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 25.6.2004 Где: Минск Репутация: нет Всего: 2 |
Не помешало бы
![]() |
|||
|
||||
JSman |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 279 Регистрация: 10.7.2006 Репутация: нет Всего: 4 |
да.. при AJAX'е не фига скрипт не пашет... эти
вообще AJAX легко заменяется стандартными средствами JSCRIPT и DHTML. я предлагаю решить тебе проблему, пользуясь IFRAME
Это сообщение отредактировал(а) JSman - 13.8.2006, 23:07 |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
JSman, ну зачем же IE only писать, если скрипт тривиален? Также пользование ифреймов это лишние щелчки в ИЕ и пожирание памяти в лисе.
kkorsakoff, "вставлять скрипты" никуда нельзя, по крайней мере в Opera 9 и NN 7 с этим должны быть проблемы (не должны выполнять). Вообще всё это на вид кажеться очень диким, лучше бы задачу выложил, порешали бы менее криво. Ну а для изврата конечно же всегда существует eval, передаём тело полученного скрипта. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
JSman |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 279 Регистрация: 10.7.2006 Репутация: нет Всего: 4 |
||||
|
||||
JSman |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 279 Регистрация: 10.7.2006 Репутация: нет Всего: 4 |
тот код был использован в моем проекте по отслеживанию событий и тд, и подумал может кому-то понадобится в решении задач.
|
|||
|
||||
vasac |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 13 Всего: 36 |
А зачем с помощью аякса подгуржать js-файл, потом пихать его в eval(), когда для подключения внешних сценариев есть стандартное средство — элемент <script>?
Дальше остается только поймать момент полной загрузки сценария. |
|||
|
||||
Avb |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 5.7.2006 Репутация: 4 Всего: 13 |
В библиотеке prototype.js есть класс Ajax.Updater. При его использовании скрипты javascript работают. Но нужно учитывать следующее:
Выдержка из документации библиотеки prototype.js: If your server logic returns JavaScript code along with HTML markup, the Ajax.Updater object can evaluate that JavaScript code. To get the object to treat the response as JavaScript, you simply add evalScripts: true; to the list of properties in the last argument of the object constructor. But there's a caveat. Those script blocks will not be added to the page's script. As the option name evalScripts suggests, the scripts will be evaluated. What's the difference, you may ask? Lets assume the requested URL returns something like this:
In case you've tried it before, you know it doesn't work. The reason is that the script block will be evaluated, and evaluating a script like the above will not create a function named sayHi. It will do nothing. To create this function we need to change our script to create the function. See below.
Note that in the previous example we did not use the var keyword to declare the variable. Doing so would have created a function object that would be local to the script block (at least in IE). Without the var keyword the function object is scoped to the window, which is our intent. Полный текст: http://www.sergiopereira.com/articles/prototype.js.html Думаю здесь описывается твоя проблема. Если проблема в другом, то пользуй Ajax.Updater из prototype.js или посмотри как сделано у них то, что не работает у тебя. Это сообщение отредактировал(а) Avb - 15.8.2006, 15:11 |
||||
|
|||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Avb, в prototype.js все скрипты вырезаються, затем полученная вёрстка ставиться в innerHTML и после все скрипты по eval'у выполняються все разом.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Avb |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 5.7.2006 Репутация: 4 Всего: 13 |
Sardar, спасибо за разъяснения. Но, честно говоря, я не понял какой-из этого следует вывод? Использование prototype.js не решит проблему kkorsakoff-а? |
|||
|
||||
kkorsakoff |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 14 |
Спасибо, это решение помогло бы мне. Единственное, что я попросту решил задачу перепостановкой оной
![]() Это сообщение отредактировал(а) kkorsakoff - 28.8.2006, 12:59 |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Единственное для чего ещё можно подгружать скрипты, это вызов document.write (ну всё остальное мне кажеться просто диким ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
kkorsakoff |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 14 |
Нет, на самом деле для определения новых функций для последующего их вызова по onclick:)
Писать все в onclick="...." громоздко, а в <script> бразуер эти функции не видел (в чем собственно и был мой вопрос ![]() |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Странно, это как? Подзагрузка таких динамических скриптов как предложил vasac, должно и будет работать, собственно на этом "псевдо аякс"/JSON и построен. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |