Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.129.63.114] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Я подгружаю с сервера при помощи xmlHttpRequest данные, но помимо html кода так же приходит javaScript код. Вопрос такой: как выполнить вновь пришедший javaScript код?
|
Сообщ.
#2
,
|
|
|
var s = "alert(1)"; eval(s); ? |
Сообщ.
#3
,
|
|
|
eval - это понятно, но тут немного другая ситуация:
в ответе приходят как html код так javascript код они все в responseText и все это я отображаю в элемент showResponse (<td id="showResponse"></td>), т.е. document.getElementById("showResponse").innerHTML = responseText. Как (если возможно) сделать так, чтобы все html тэги отобразились, а javaScript код выполнился? |
Сообщ.
#4
,
|
|
|
может распарсить полученный респонс?
взять все между <script language="javascript">...</script> и выполнить как сказал Rom@nych с помощью eval |
Сообщ.
#5
,
|
|
|
Цитата может распарсить полученный респонс? взять все между <script language="javascript">...</script> и выполнить как сказал Rom@nych с помощью eval Понятно, что так можно, но это не удобно, особенно, когда блоков script не один, а много а другого более цивилизованного метода никто не знает? (вопрос ИМХО тривиальный) |
Сообщ.
#6
,
|
|
|
Polygon, цивилозованней метода - НЕТ
|
Сообщ.
#7
,
|
|
|
Цитата Polygon, цивилозованней метода - НЕТ Ну если так, то вопрос решен - парсить ответ + eval() |
Сообщ.
#8
,
|
|
|
function get(uri) { try { this.xrequest=new XMLHttpRequest(); this.xrequest.open("GET", uri, false); setAttrib(this.xrequest); this.xrequest.send(null); // alert(this.xrequest.responseText); return this.xrequest.responseXML; } catch (error) { alert(error); } return null; } var xml=get("/part/part.xml"); var scripts=xml.getElementsByTagName("script"); ////...... |
Сообщ.
#9
,
|
|
|
Что нужно делать чтобы запустить скрипт который прописан на странице следующим образом:
<html> ... <body> ... <script type="text/javascript" src="http://someserver.com/some.js"> </script> </body> <html> |
Сообщ.
#10
,
|
|
|
Как достать все скрипты описано в соседнем топике. Теперь, путь к подключаемому ты всегда можешь определить по аттрибуту src. Далее, для подключения css приводили такой код:
function LoadStyleSheet(css_file_name) { if (css_file_name && css_file_name.length) { for (var runner = 0; runner < document.styleSheets.length; runner ++) { if (document.styleSheets[runner].title == css_file_name) { return; }; }; var link_el = document.createElement('link'); link_el.rel = 'stylesheet'; link_el.type = 'text/css'; link_el.href = './css/' + css_file_name; link_el.title = css_file_name; document.getElementsByTagName('head')[0].appendChild(link_el).disabled = false; }; }; Опробируй его на предемет подключения скриптов. Если удастся, то решения доточить напилиьником и спаять |
Сообщ.
#11
,
|
|
|
Цитата document.styleSheets а где харняться скрипты в документе document.javaScripts? |
Сообщ.
#12
,
|
|
|
var arrScripts = document.getElementsByTagName ('SCRIPT'); |
Сообщ.
#13
,
|
|
|
Не подскажете что делать если при помощи этого метода
function InsertHTML(el, html) { el.innerHTML=html; scripts = el.getElementsByTagName("script"); head = document.getElementsByTagName('head')[0]; for(i=0 ; i<scripts.length ; i++) { eval (scripts[i].innerHTML); var script = document.createElement('script'); script.src = scripts[i].src; head.appendChild(script); } } добавлять на страницу код колученный через Ajax и на страницу загружается подобный скрипт <script language="Javascript"> my_image = new Array(); my_image_text = new Array(); my_image[0]="<img src='City_to_KML/Kirov/_photo/building_photo/im_7588_01.JPG'>"; my_image_text[0]=" "; my_image[1]="<img src='City_to_KML/Kirov/_photo/building_photo/im_7588_02.JPG'>"; my_image_text[1]=" "; function picture_change(num) { var num_id =num; document.getElementById("ImgGallery_image").innerHTML=my_image[num_id] ; document.getElementById("ImgGallery_text").innerHTML=my_image_text[ num_id]; return false; } </script> Страница вешается. По моему из за того, что при принудительном исполнении функции ей не передано значение входного параметр. Подскажите как решить эту проблему. |
Сообщ.
#14
,
|
|
|
Цитата proman @ Что-то я не вижу, чтобы в приведенном коде вообще вызывалась функция... она там только описана...По моему из за того, что при принудительном исполнении функции ей не передано значение входного параметр. Вообще eval - зло... надо бы лучше подключать скрипты... Добавлено А зачем ты, кстати и eval делаешь и подключаешь? Надо делать что-то одно... |
Сообщ.
#15
,
|
|
|
Я уже так и так пробовал.
Или в загружаемом коде скрипты не работают или на странице происходит какой то глюк (по виду как будто срабатывает вызов функции picture_change) Полный кусок html и Javascript кода получаемый через ajax аналогичен приведенному ниже: <script language="JavaScript"> my_image = new Array(); my_image_text = new Array(); my_image[0]="<img src='City_to_KML/Kirov/_photo/building_photo/im_7588_01.JPG'>"; my_image_text[0]=" "; my_image[1]="<img src='City_to_KML/Kirov/_photo/building_photo/im_7588_02.JPG'>"; my_image_text[1]=" "; function picture_change(num) { var num_id =num; document.getElementById("ImgGallery_image").innerHTML=my_image[num_id]; document.getElementById("ImgGallery_text").innerHTML=my_image_text[num_id]; return false; } //<script type="text/javascript" src="http://www.kirov2kml.ru/components/com_record2article/js/picture_change_file.js"></script> </script> <div id="AllPhoto" style="background-color: rgb(242, 242, 242); width: 420px; text-align: center;"> <div id="NewsSlaids"> <div id="ImgGallery_image" style="text-align: center; padding-top: 10px;"><img src="City_to_KML/Kirov/_photo/building_photo/im_7588_01.JPG"> </div> <div id="ImgGallery_text" style="text-align: center;"> </div> <div id="Nav_Photo" style="text-align: center; padding-bottom: 10px;"><br>| <a href="#" onclick="picture_change(0)">1</a> | <a href="#" onclick="picture_change(1)">2</a> | </div> </div> </div> Пробовал функцию и во внешний файл picture_change_file.js выносить, безрезультатно. Пробовал отключать eval как Вы советуете, в этом случае вылетает этот же баг. Если же оставить только eval, то подгруженные скрипты не работаю. |