![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Esco |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.7.2007 Репутация: нет Всего: нет |
Проблема такая -
получаю страницу Ajax запросом. на полученной странице, например, имеется <script language="Javascript"> function test() { alert('test'); } </script> <img src="bbb.gif" onClick="javascript: test()"> не работает! вопрос - как получить доступ к функциям на страницах получаемых Ajax запросами? |
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 11 Всего: 78 |
сделать им eval <<-- преобразование строки в JavaScript
-------------------- |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
не удачный совет. код показать можешь? |
|||
|
||||
| Esco |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.7.2007 Репутация: нет Всего: нет |
Нашел... может кому пригодится...
Как подгрузить javascript с помощью ajax Долго сидел с этой проблемой, точнее не с ней самой, а с виджетом Dojo, который хотел запустить… виджет так и не запустил, но конкретно проблему с подгрузкой javascript решил. И так, проблему можно решить 2я путями: 1) Можно создать с помощью DOM новый элемент . Пример структуры DOM следующий: var head = document.getElementsByTagName("head")[0]; script = document.createElement('script'); script.id = 'uploadScript'; script.type = 'text/javascript'; script.src = "../path/script.js"; head.appendChild(script);За пример спасибо Sam’у. При этом все выполняемые скрипты нужно выкладывать в отдельный файл, что не всегда хорошо. 2) Второй способ основывается на функции eval(). Ее использование считает не очень хорошим тоном, т.к. это открывает новые дыры в безопасности, но если вы уверены в сохранности своего кода, то использовать функцию можно. Принцип следующий - при загрузке новых данных при помощи ajax необходимо парсить их на наличие тега “script”, если он есть, то все значение этого тега обрабатываем при помощи eval(value); Эта функция выполняет javascript код. Добавлено через 1 минуту и 46 секунд А у кого есть пример как правильно парсить респонс и обрабатывать eval ? |
|||
|
||||
| MisterCleric |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: нет Всего: 38 |
а чего ты полез в такие дебри?
смотри как выходит просто:
любые объявления глобальных функций сетяться объекту window. А Dojo может скрипты только выполнить, но не создать. А таким образом мы их обманули: объекту window присвоили новое свойство типа function поскольку window глобальный, то это свойство начинает быть везде видимым. Как только эта функция тебе не нужна говоришь так:
-------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
||||
|
||||
| Burrr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 4.9.2005 Репутация: 10 Всего: 20 |
Aliance, delete - это хорошо забытое старое, а не новое ;)
|
|||
|
||||
| Esco |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.7.2007 Репутация: нет Всего: нет |
нет -так не работает. Речь идет о результате полученным Ajax запросом.
Нашел вот еще одно решение new Ajax.Updater({ success: 'items' }, '/items', { parameters: { text: $F('text') }, evalScripts: true, insertion: Insertion.Bottom }); |
|||
|
||||
| SamDark |
|
|||
|
Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 2 Всего: 38 |
Ну, тут вообще может быть всего два пути:
1. Без собственного парсера. т.е. eval() и варианты вроде динамической вставки и выполнения (ничем, кстати, не лучше). 2. Собственный парсер (возможно собственного формата). Так с самого начала всё и задуымвалось в связке с XML. Путь 1 лёгкий, опасный. Путь 2 трудоёмкий, относительно безопасный. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Чем опасен первый путь? Скрипт будет подгружать собственные данные с собственного сервера! Разве это опаснее, чем просто зайти на это сервер броузером? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| SamDark |
|
|||
|
Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 2 Всего: 38 |
ksnk,
Не опаснее, если данные на сервере проверяются. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |