powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Подгрузка чрез AJAX контента HTML содержащего JavaScript
19 сообщений из 19, страница 1 из 1
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35413083
Фотография Пуп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фреймворков и библиотек для асинхронной подгрузки HTML в какой нибудь div итп. полно, но все они могут подгружать только простой HTML. Если же в HTML коде содержится JavaScript, то он не выполняется либо лезут баги после загрузки.

Есть так же возможности асинхронно подкачивать js и css файлы но это всё не то. Мне нужно асинхронно загрузить в DIV - HTML содержащий JavaScript. Кто нибудь сталкивался с такой проблемой?

PS
Вынести JavaScript в отдельный JS файл не предлагать. Там используюся конструкции типа document.write и поэтому JavaScript должен находиться прямо в HTML
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35413099
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В prototype.js при загрузке HTML-контента можно задать параметр evalScript.
Но скрипты будут выполняться немного по-другому. Каждый скрипт выполняется функцией eval() в контексте функции из библиотеки prototype.js в локальномконтексте этой функции. Поэтому все локальные имена не будут видны (это имена переменных заанных с var и имена функций заданных как function ...)
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35413100
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПупВынести JavaScript в отдельный JS файл не предлагать

Ладно, не будем.
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35413120
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПупФреймворков и библиотек для асинхронной подгрузки HTML в какой нибудь div итп. полно...
Нафиг эти фреймворки и библиотеки. Для загрузки страниц, действительно, можно использовать XmlHttpRequest, который обычно отождествляют с аяксом.
Можно же использовать тот факт, что креатеЭлемент "скрипт" и аппенд чилд его в боди, позволяет выполнить этот скрипт непосредственно. Премерчег не напишу - задолбало уже.
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35413136
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge[
Можно же использовать тот факт, что креатеЭлемент "скрипт" и аппенд чилд его в боди, позволяет выполнить этот скрипт непосредственно. Премерчег не напишу - задолбало уже.

Ну мужик же просил в отдельный файл не предлагать.

Он по-своему прав. Если переводить обычное приложение в асинхронное - как раз и нужен функционал с выпонением скриптов и загрузкой CSS.
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35413144
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда можно пропарсить входящий xhtml или чего там, и опять - аппенд чилд... .
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35413208
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пуп Там используюся конструкции типа document.write и поэтому JavaScript должен находиться прямо в HTML

Не заметил сразу эту подробность. Асинхронные запросы загружеют документ после загрузки основного документа. Любой вызов write после загрузки основного документа (это Ваш случай) перепишет текст документа новым значением.
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35413242
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бггг, ну грузи тогда в iframe :) или измени своим принципам
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35413875
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПупФреймворков и библиотек для асинхронной подгрузки HTML в какой нибудь div итп. полно, но все они могут подгружать только простой HTML. Если же в HTML коде содержится JavaScript, то он не выполняется либо лезут баги после загрузки.

Есть так же возможности асинхронно подкачивать js и css файлы но это всё не то. Мне нужно асинхронно загрузить в DIV - HTML содержащий JavaScript. Кто нибудь сталкивался с такой проблемой?

PS
Вынести JavaScript в отдельный JS файл не предлагать. Там используюся конструкции типа document.write и поэтому JavaScript должен находиться прямо в HTML

Какие проблемы? - У меня последний проект от и до построен на такой схеме, все страницы (пока десятка 3) грузятся динамически. Точнее, не страницы, а контент рабочей области. Зачастую скрипты вместе с хтмл-кодом занимают строк по 600-900. Не скажу про ВСЕ навигаторы, но ИЕ6, ИЕ7 и ФФ2 работают отлично. Конечно, есть js-файл, но он служит только для загрузки моего контента и обработки некоторых универсальных вещей - ввода текста, вывода текста ошибок, загрузки скрипта и т.д.
Что интересно, есть страницы, которые грузятся динамически, создают плавающий див и точно таким же способом грузят в него также код и скрипт, который так же выполняется.
В принципе, сделано достаточно сложно и не очень удобно. Но главное, чего добивался - динамическая подгрузка контента (типа десктоп приложение) и практически полная защищенность кода.

Использую следующую конструкцию (прошу не ругать - это с прошлого проекта и требует доработки, чем позже и займусь):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
function updateContent(_action) {
	var url = document.getElementById("content").value + "?subAction=" + _action + "&rand=" + Math.random();
	request.open("POST", url, true);
	request.onreadystatechange = behaviorContent;
	request.send(null);
}
function updateContentWithData(_data) {
	request.open("POST", document.getElementById("content").value, true);
	request.onreadystatechange = behaviorContent;
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.send(urlEncodeData(_data));
}
function behaviorContent() {
	if (request.readyState ==  4 ) {
		_message = request.responseText;
		var active_div = "main_body";
		if (_message != "") {
			if (_message.slice( 0 ,  6 ) == "error!") {
				_message = _message.split("|")[ 1 ];
				active_div = "error_body";
			} else clearError();
			document.getElementById(active_div).innerHTML = _message;
			run_script(document.getElementById(active_div));
			window.status = "";
		}
	}
}
function urlEncodeData(data) {
	var query = [];
	if (data instanceof Object) {
		for (var i in data) query.push(encodeURIComponent(i) + "=" + encodeURIComponent(data[i]));
		return query.join('&');
	} else return encodeURIComponent(data);
}
function run_script(_div) {
	var divContent = _div.childNodes;
	for (var i =  0 ; i < divContent.length; i++) {
		requestItem = divContent.item(i);
		if (requestItem.tagName)
			if (requestItem.tagName.toUpperCase() == 'SCRIPT') eval(requestItem.text);
		else run_script(requestItem);
	}
}

"main_body" - id того самого дива, содержимое которого меняется.
Если первые 6 получаемых символов - "error!", содержимое не обновляем, а выписываем ошибку.
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35413892
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могутолько добавить, что для работы в глоабальной области вилис=мости нужно использовать window.eval() или execScript() вместо eval(). Как, например. это жделает globalEval() в jQuery
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35414699
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теоретически может быть. Но насколько я понимаю некоторые аспекты javascript, то идиомы "eval()" и "window.eval()" идентичны. Кроме этого, по своему опыту скажу, что не возникало даже заминки по этому поводу.

p.s. А jQuery - пересерщики.
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35415030
Фотография Пуп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckТеоретически может быть. Но насколько я понимаю некоторые аспекты javascript, то идиомы "eval()" и "window.eval()" идентичны. Кроме этого, по своему опыту скажу, что не возникало даже заминки по этому поводу.

p.s. А jQuery - пересерщики.

А у тебя в коде встречается document.write? Вся проблема в нем, что он должен находиться и выполняться именно в конкретном участке HTML фрагмента. Вынесение его в JS или выполнение через eval НИЧЕГО не даст - document.write выпишет нужное хрен знает куда.
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35415099
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПупА у тебя в коде встречается document.write?
Врядли он его использует вообще. Тебе-то зачем эта фигня нужна? Без документ.врите - лучше живёццо.
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35415681
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно без eval. Пусть у нас есть хтмл-файл:
Код: plaintext
1.
<html><script type="text/javascript">alert("qqq");</script><body>aaa</body></html>
Загружаем его реквестом, далее, парсим полученный XML и вставляем скрипт:
Код: plaintext
1.
2.
3.
sc=document.createElement("SCRIPT");
sc.innerHTML=req.responseXML.childNodes[ 0 ].childNodes[ 0 ].childNodes[ 0 ].nodeValue;
document.body.appendChild(sc);
ПС это в фирефоксе.(Чё-то много чилднодесов, но работает).
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35415913
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буквально сегодня читал статью AJAX-проблемы на одном блоге
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35416441
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пуп IDVsbruckТеоретически может быть. Но насколько я понимаю некоторые аспекты javascript, то идиомы "eval()" и "window.eval()" идентичны. Кроме этого, по своему опыту скажу, что не возникало даже заминки по этому поводу.

p.s. А jQuery - пересерщики.

А у тебя в коде встречается document.write? Вся проблема в нем, что он должен находиться и выполняться именно в конкретном участке HTML фрагмента. Вынесение его в JS или выполнение через eval НИЧЕГО не даст - document.write выпишет нужное хрен знает куда.

Забудь. document.write - зло! Хочешь нормально делать - делай через DOM.
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35416443
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BerkutБуквально сегодня читал статью AJAX-проблемы на одном блоге

А посмотреть на дату? С сегодняшнего дня это смотрится как бред ...
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35418560
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но там есть неплохая ссылка
http://fullajax.ru/#:developers
...
Рейтинг: 0 / 0
Подгрузка чрез AJAX контента HTML содержащего JavaScript
    #35418679
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, ссылка - это ссылка.
Кроме этого, хотя ребята вроде как неплохо потрудились, но ... а) надо быть любителем использовать внешние библиотеки; б) ради какой-то одной "фичи", которая делается в 20 строчках кода, ставить внешнюю библиотеку - пожалуй, неправильно; в) кроме этой библиотеки надо поставить еще и dojo - не самая маленькая лайбрари; г) если нужны экранные эффекты, то есть значительно мощней и больше библиотеки - вроде как облом ставить ... Поэтому в контексте рассматриваемых вопросов, на мой взгляд, она достаточно бессмысленная.

Зато есть и хорошая сторона, особенно для тех, кто не программирует на Java или Delphi (С не рассматриваю, так как синтаксис и форматирование там более хаотическое) и особенно для ПэХаПи-стов: обратите внимание на форматирование кода в библиотеке - любо-дорого посмотреть. Все же Java - замечательная школа в этом смысле, и тут она видна в полной мере - подход, названия, синтаксис и т.д. Просто насмотришься на хаотический код, на котором обычно лабают javascript, и тоскливо становится ... :)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Подгрузка чрез AJAX контента HTML содержащего JavaScript
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]