Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как script запихнуть в переменную? 
:(
    Опции темы
Dima85
Дата 19.4.2010, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Есть такой код:
Код

    <div id="results"></div>
    <script type="text/javascript">
          join = '<script type="text/javascript">alert("ok");<\/script>';
          document.getElementById('results').innerHTML = 'test: '+join;
    </script>


я в переменную join вставляю javascript который в дальнейшем должен появиться в <div id="results"></div>.
Он появляется но отказывается работать. Тоесть в данном случае должен выскочить alert которого нет.
Почему так происходит?
PM MAIL   Вверх
GoldFinch
Дата 19.4.2010, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



"<\/script>"
тут надо убрать экранирование: "</script>"
PM MAIL ICQ   Вверх
GoldFinch
Дата 19.4.2010, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



хотя оно всеравно не работает)
PM MAIL ICQ   Вверх
Amphiluke
Дата 19.4.2010, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Экранирование необходимо, иначе интерпретатор воспримет закрывающий тег </script> как относящийся к «внешнему» (текущему) сценарию, несмотря на кавычки.

Проблема, по-видимому в том, что запись в свойство innerHTML недопустима во время загрузки документа. Можно либо воспользоваться методом write объекта document, либо использовать стандартные методы формирования DOM
Код

    <div id="results"></div>
    <script type="text/javascript">
        var scr = document.createElement("script");
        scr.appendChild(document.createTextNode("alert('ok')"));
        document.getElementById('results').appendChild(scr);
    </script>


------------------------------------
UPD.
Вот, кажется, кроссбраузерный вариант (приведенный выше способ в IE не работает):
Код

<script type="text/javascript" id="scr">
    var scr = document.createElement("script");
    scr.text = "alert('ok')";
    document.getElementById('results').appendChild(scr);
</script>


Это сообщение отредактировал(а) Amphiluke - 19.4.2010, 12:37
PM   Вверх
Sartorius
Дата 19.4.2010, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Не спец по JS, но мне кажется код в теге script отрабатывает при парсинге странице. А ты его добавляешь уже после этого. Повесь что ли на событие какое-нибудь его.
PM MAIL ICQ   Вверх
GoldFinch
Дата 19.4.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Amphiluke,
вместо экранирования можно разбить строку на части
после загрузки документа код также не работает
Код

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<div id="results"></div>
<script type="text/javascript">
    $(function(){
        document.getElementById('results').innerHTML = 'test: ' + '<script type="text/javascript">alert(1)</' + 'script>';
    })
</script>

PM MAIL ICQ   Вверх
Dima85
Дата 19.4.2010, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Спасибо, вопрос решен, избавился от document.getElementById('results').innerHTML
заменив на: $('#results').html   
(jQuery)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.