Показать сообщение отдельно
Старый 03.04.2015, 17:29   #1
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Выполнение JS внутри страницы запрашиваемой AJAX'ом

Приветствую, Булчане.

Есть небольшая проблемка. Перепиливаю систему окошек у себя на сайте, всё красиво и работает. Но, мне не нравится что содержимое окошек подготавливается сразу при загрузке страницы, даже если я эти окошки не буду открывать, и, собственно, сама страница весит дюже дофига. Решил сделать запрос содержимого окошек ajax'ом при открытии каждого окошка (то что такое окошко будет открываться с временнЫм лагом при тормозном интернете - за проблему не считаю пока что).

Собственно, всё бы хорошо, но у меня на запрашиваемой ajax'ом странице поля ввода (input обыкновенные) создаются через функцию js (допустим, createInput с какими то там параметрами). Я понимаю что не есть хорошо, гораздо проще нормально html-инпутов навешать. Но так есть (остаток от предыдущего программиста проекта), и, выпилить всё это безобразие времени не хватает.
Так вот. Как можно эти js функции выполнить внутри страницы, которую я спрашиваю аяксом?

Схематичный пример:
страничка window1.php:
...
<
script type="text/javascript" src="windows.js"></script>
//в этом js-файле описана функция createInput(parent, id);
//первый параметр - куда добавлять инпут (добавляется через innerHTML)
//второй параметр - id самого инпута
...
<div id="div1">
    <script type="text/javascript">
        createInput("div1", "inputForDiv1"); 
    </script>
</div>
<div id="div2">
    <script type="text/javascript">
        createInput("div2", "inputForDiv2"); 
    </script>
</div>
... 
страничка где работаю аяксом:
<script type="text/javascript">
    
jQuery.ajax({
    
type"GET",
    
url"window1.php",
    
success: function (data){       
        
document.getElementById('windowNetworkContent').innerHTML data;

        
document.getElementById('inputForDiv1').value "azazaza";
    }
});
</script> 
Полученый html вставляется как надо (за исключением инпутов создаваемых js-ом), и на
document.getElementById('inputForDiv1').value "azazaza"
вполне ожидаемо выскакивает ошибка отсутствия элемента (js ведь не выполнился внутри ajax-запроса).

Каким способом можно запустить этот js внутри запроса?
Eval не предлагать. Даже не беря во внимание небезопасность его использования, его всё равно использовать не получится - внутри window1.php есть код php, на котором Eval сразу же и умирает.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием