На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU, ANDLL, fatalist
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> AJAX подгрузить javaScript
    Я подгружаю с сервера при помощи xmlHttpRequest данные, но помимо html кода так же приходит javaScript код. Вопрос такой: как выполнить вновь пришедший javaScript код?
      ExpandedWrap disabled
        var s = "alert(1)";
        eval(s);

      ?
        eval - это понятно, но тут немного другая ситуация:
        в ответе приходят как html код так javascript код они все в responseText и все это я отображаю в элемент showResponse (<td id="showResponse"></td>), т.е. document.getElementById("showResponse").innerHTML = responseText. Как (если возможно) сделать так, чтобы все html тэги отобразились, а javaScript код выполнился?
          может распарсить полученный респонс?
          взять все между <script language="javascript">...</script> и выполнить как сказал
          Rom@nych с помощью eval
            Цитата
            может распарсить полученный респонс?
            взять все между <script language="javascript">...</script> и выполнить как сказал
            Rom@nych с помощью eval


            Понятно, что так можно, но это не удобно, особенно, когда блоков script не один, а много а другого более цивилизованного метода никто не знает? (вопрос ИМХО тривиальный)
              Polygon, цивилозованней метода - НЕТ
                Цитата
                Polygon, цивилозованней метода - НЕТ

                Ну если так, то вопрос решен - парсить ответ + eval()
                  ExpandedWrap disabled
                    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");
                     
                    ////......
                    Что нужно делать чтобы запустить скрипт который прописан на странице следующим образом:

                    <html>
                    ...
                    <body>
                    ...
                    <script type="text/javascript"
                    src="http://someserver.com/some.js">
                    </script>
                    </body>
                    <html>
                      Как достать все скрипты описано в соседнем топике. Теперь, путь к подключаемому ты всегда можешь определить по аттрибуту src. Далее, для подключения css приводили такой код:
                      ExpandedWrap disabled
                        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;
                            };
                        };


                      Опробируй его на предемет подключения скриптов. Если удастся, то решения доточить напилиьником и спаять :)
                        Цитата
                        document.styleSheets


                        а где харняться скрипты в документе

                        document.javaScripts?
                          ExpandedWrap disabled
                            var arrScripts = document.getElementsByTagName ('SCRIPT');
                            Не подскажете что делать если при помощи этого метода

                            ExpandedWrap disabled
                              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 и на страницу загружается подобный скрипт

                            ExpandedWrap disabled
                              <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>



                            Страница вешается. По моему из за того, что при принудительном исполнении функции ей не передано значение входного параметр.
                            Подскажите как решить эту проблему.
                              Цитата proman @
                              По моему из за того, что при принудительном исполнении функции ей не передано значение входного параметр.
                              Что-то я не вижу, чтобы в приведенном коде вообще вызывалась функция... она там только описана...

                              Вообще eval - зло... надо бы лучше подключать скрипты...

                              Добавлено
                              А зачем ты, кстати и eval делаешь и подключаешь? Надо делать что-то одно...
                                Я уже так и так пробовал.
                                Или в загружаемом коде скрипты не работают или на странице происходит какой то глюк (по виду как будто срабатывает вызов функции picture_change)
                                Полный кусок html и Javascript кода получаемый через ajax аналогичен приведенному ниже:
                                ExpandedWrap disabled
                                  <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, то подгруженные скрипты не работаю.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0876 ]   [ 14 queries used ]   [ Generated: 17.05.24, 10:13 GMT ]