Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   XmlHTTPRequest с подгрузкой JavaScript (https://javascript.ru/forum/dom-window/39761-xmlhttprequest-s-podgruzkojj-javascript.html)

RapCore 11.07.2013 00:42

XmlHTTPRequest с подгрузкой JavaScript
 
как можно вместе с html подгрузить и js которые будет обрабатывать события и тд. и возможно ли это вообще?
страницы подгружаю таким кодом
function newContent(link,target) {
/*
link - URL адрес подгружаемой страницы
target - DIV в который мы подгружаем контент
*/
var contaner = document.getElementById(target);

contaner.innerHTML = 'Загрузка ...';

var resource = getRequest();
if( resource )
{
resource.open('get',link);
resource.onreadystatechange = function ()
{
/*Получаем значение, указывающее текущее состояние элемента управления*/
if(resource.readyState == 4)
{
contaner.innerHTML = resource.responseText;
}
}
resource.send(null);
}
else
{
document.location = link;
}
}
/* Функция для получения метода для работы с браузерами */
function getRequest(){
try { return new XMLHttpRequest() }
catch(e)
{
try { return new ActiveXObject('Msxml2.XMLHTTP') }
catch(e)
{
try { return new ActiveXObject('Microsoft.XMLHTTP') }
catch(e) { return null; }
}
}
}

danik.js 11.07.2013 07:57

Возможно, используя eval либо создавая элемент <script> и добавляя его в документ. Но такие манипуляции свидетельствуют о кривых руках разработчика и непродуманной архитектуре.

RapCore 11.07.2013 10:20

danik.js,
на криворукость мне все равно,главное что бы работало.
сейчас решил вот таким способом воспользоваться
var txt = resource.responseText.split ('###'); // делите полученную строку символов по разделителю ###
contaner.innerHTML = txt [1];                  // первую часть "набора  символов" записываете как текст в нужный контейнер
 
var y = document.createElement ('script');     // cоздаёте новый тег <SCRIPT>
y.defer = true;                                // даёте разрешение на исполнение скрипта после его "приживления" на странице
y.text = txt [0];                              // записываете вторую часть полученного от сервера "набора символов" как JS-код
document.body.appendChild (y);                 // "приживляете" созданный тег <SCRIPT>

тоесть пишем сначала js код, отделяем его текста таким символом ###
остается вопрос как должен выглядеть php файл который подгружаю. не просто же его сделать вида
js код###html код

danik.js 11.07.2013 11:57

Можно обойтись без танцев с решеточками.
Так и оставить теги <script> вместе с html. После вставки html в элемент ищем все теги <script> внутри него и переносим их в <head>

RapCore 12.07.2013 13:56

что то у меня не получается ничего рабочего написать(я только начал осваивать js) потому могу заплатить тому кто поможет написать рабочий код который будет нормально подгружать страницу с работающим js кодом


Часовой пояс GMT +3, время: 15:56.