Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему не работает тег <script> внутри тега <div>? (https://javascript.ru/forum/misc/3259-pochemu-ne-rabotaet-teg-script-vnutri-tega-div.html)

serviom 01.04.2009 13:10

Почему не работает тег <script> внутри тега <div>?
 
Сделал изменение странице з помощю AJAX и такая проблема!
Когда заполняем тег DIV внутри ево неработает тег SCRIPT!
Как с этим боротся? :)

AzriMan 01.04.2009 15:07

а для чего на JavaScript заполняя тег div создавать контейнер script? неужели нельзя сразу на JS выполнить то, что вы собираетесь туда вставлятЬ?

serviom 01.04.2009 20:22

Цитата:

Сообщение от AzriMan (Сообщение 15714)
а для чего на JavaScript заполняя тег div создавать контейнер script? неужели нельзя сразу на JS выполнить то, что вы собираетесь туда вставлятЬ?

чтоб например использовать document.title , location.href !!!

Kolyaj 01.04.2009 20:31

Цитата:

Сообщение от serviom
чтоб например использовать document.title , location.href !!!

И как это противоречит этому?
Цитата:

Сообщение от AzriMan
неужели нельзя сразу на JS выполнить то, что вы собираетесь туда вставлятЬ?


serviom 01.04.2009 21:03

Цитата:

Сообщение от Kolyaj
неужели нельзя сразу на JS выполнить то, что вы собираетесь туда вставлятЬ?

на главной странице сылки разние могут быть! например параметр id разный, ну вот href и будет его выводить

AzriMan 02.04.2009 11:41

......эээх......
покажите пример кода.

AzriMan 02.04.2009 17:27

не знаю, совпадение или нет. сейчас сам по работе столкнулся с такой-же трудностью :)
у нас есть таблица, в которой хранятся новости. обычные хтмл теги. на странице с новостями выводятся только заголовки. при клике по заголовку подгружается новость. возникла необходимость вставить flash video. нашел flash проигрыватель, дописал к нему пару строчек кода (в теге script). и вставил всё в базу. т.е. при клике - значение из таблицы подгрузилось в некий div. и. облом. подгруженный контент (а именно содержимое <script>), ведь, не выполнится :) вопрос. что делать?

возникла первая мысль. внутренности этого тега обернуть некой функцией A(). а в функции B(), которая производит подгрузку контента из базы, проверять существование этой конкретной ф-и А(). если она существует - запускать ее.

будут еще варианты? :)

Kolyaj 02.04.2009 17:37

Цитата:

Сообщение от AzriMan
будут еще варианты?

В таких случаях просто регекспами выдергиваются скрипты и eval'ятся.

AzriMan 02.04.2009 17:40

я уже думал об этом. хочу обойтись меньшей кровью.

--edited
кстати, насчет функции. а ведь этот вариант и не подойдет. ф-я А() тоже не будет существовать.

--edited x2
подобная тема уже всплывала http://javascript.ru/forum/ajax/1467...erez-ajax.html

--edited x3
даже готовое решение есть: http://javascript.ru/forum/ajax/1467....html#post4139
Цитата:

Сообщение от ZoNT (Сообщение 4139)
function extractScripts(str) {
  var reg = /<script.*?>((?:\n|\r|.)*?)<\/script>/gi;
  var results = str.match(reg);
  for (var i = 0; i < results.length; i++) eval(results[i].replace(reg,'$1'));
}



я тем временем наваял код:
scripts = [];
	var regexp = /<script[^>]*>([\s\S]*?)<\/script>/gi;
	while ((script = regexp.exec(response))) scripts.push(script[1]);
		scripts = scripts.join('\n');


...и решил поискать по форуму. оказалось тут уже было такое )

serviom 02.04.2009 21:48

Цитата:

Сообщение от AzriMan (Сообщение 15794)
я уже думал об этом. хочу обойтись меньшей кровью.

--edited
кстати, насчет функции. а ведь этот вариант и не подойдет. ф-я А() тоже не будет существовать.

--edited x2
подобная тема уже всплывала http://javascript.ru/forum/ajax/1467...erez-ajax.html

--edited x3
даже готовое решение есть: http://javascript.ru/forum/ajax/1467....html#post4139

я тем временем наваял код:
scripts = [];
	var regexp = /<script[^>]*>([\s\S]*?)<\/script>/gi;
	while ((script = regexp.exec(response))) scripts.push(script[1]);
		scripts = scripts.join('\n');


...и решил поискать по форуму. оказалось тут уже было такое )

скажу по українське! РОЗУМНО :)


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