Javascript в Javascript
От: Dizzy  
Дата: 14.12.06 20:05
Оценка:
Подскажите почему не выполняется динамически вставленный Javascript?

<html>
    <body>
        <div id='#testdiv'>Click a button to fill this DIV</div></br>
        <button onclick='BClick()'>Fill</button>
        <script language=javascript>
        <!--
        function BClick()
        {
            var TDiv = document.getElementById("#testdiv")
            if (TDiv)
                TDiv.innerHTML = "Alert<script language=javascript>alert('Hello world!!!')</script>"
        }
        //-->
        </script>
    </body>
</html>


Просто по условию задачи программа может делать всё что угодно но в своём диве, ID которого предварительно оговаривается с заказчиком. Нужно динамически наполнить этот див html элементами, а также добавить скрипт, в скрипте есть глобальные переменные, и оборачивать скрипт как одну функцию крайне нежелательно. Кто что посоветует?
Re: Javascript в Javascript
От: kost-BebiX Украина http://fedorastones.blogspot.com
Дата: 14.12.06 22:32
Оценка:
Здравствуйте, Dizzy, Вы писали:

D>Подскажите почему не выполняется динамически вставленный Javascript?


А почему должен? Он вставляется, а выполняться его никто не просил.

D>Просто по условию задачи программа может делать всё что угодно но в своём диве, ID которого предварительно оговаривается с заказчиком. Нужно динамически наполнить этот див html элементами, а также добавить скрипт, в скрипте есть глобальные переменные, и оборачивать скрипт как одну функцию крайне нежелательно. Кто что посоветует?


Странная постановка задачи. Ну делайте все вне дива. Просто вместо this пишите document.getElementById("#testdiv") вот и все.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Если программист в рабочее время играет, значит —
либо у него мало работы и большая зарплата,
либо у него много работы и маленькая зарплата.
Re[2]: Javascript в Javascript
От: Dizzy  
Дата: 14.12.06 23:33
Оценка:
Здравствуйте, kost-BebiX, Вы писали:

KB>А почему должен? Он вставляется, а выполняться его никто не просил.

Хм, тогда можно как-то натравить на него пожиратель скриптов не оборачивая функцией?
Может есть какойто метод ака Invoke, только не по имени функции, а по имени/айди скрипт тега?

KB>Странная постановка задачи. Ну делайте все вне дива. Просто вместо this пишите document.getElementById("#testdiv") вот и все.

Согласен, странная, но то что вне дива гипотетичски мне недоступно. Ну представьте ситуацию — клиент даёт сверстанную html и говорит — вот тебе див с еужным айди, делай в нём все что хочешь, но только в нём.
На самом деле в моей реализации скрипт в див вставляет не яваскрипт, а c# приложение, но тем же способом — через innerHTML, а для наглядности я передерал код так чтобы javascript втавлял javascript. А вот как запустить втавленное, я не могу понять.
Re[3]: Javascript в Javascript
От: kost-BebiX Украина http://fedorastones.blogspot.com
Дата: 15.12.06 02:55
Оценка:
Здравствуйте, Dizzy, Вы писали:

D>Хм, тогда можно как-то натравить на него пожиратель скриптов не оборачивая функцией?

D>Может есть какойто метод ака Invoke, только не по имени функции, а по имени/айди скрипт тега?

Не понял что такое invoke, но в JavaScript есть http://www.google.com.ua/search?hl=ru&amp;rls=GGGL%2CGGGL%3A2006-29%2CGGGL%3Aru&amp;q=javascript+eval&amp;btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&amp;meta=

D>Согласен, странная, но то что вне дива гипотетичски мне недоступно. Ну представьте ситуацию — клиент даёт сверстанную html и говорит — вот тебе див с еужным айди, делай в нём все что хочешь, но только в нём.

D>На самом деле в моей реализации скрипт в див вставляет не яваскрипт, а c# приложение, но тем же способом — через innerHTML, а для наглядности я передерал код так чтобы javascript втавлял javascript. А вот как запустить втавленное, я не могу понять.

Честно — все равно не понял. Если так, как вы говорите, то получается, что следует все делать на сервере (вставлять в див) и не мучаться. Иначе — плавающим фреймом.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Если программист в рабочее время играет, значит —
либо у него мало работы и большая зарплата,
либо у него много работы и маленькая зарплата.
Re[4]: Javascript в Javascript
От: 12345_ Россия http://javascript.aho.ru
Дата: 15.12.06 13:25
Оценка:
Если вставлять AJAX-ом (XMLHttp), то не будет выполняться, если ноды, то, видимо, тоже — нужен eval(). Если вставлять как src тега script, то будет.
Re[5]: Javascript в Javascript
От: kost-BebiX Украина http://fedorastones.blogspot.com
Дата: 15.12.06 17:22
Оценка:
Здравствуйте, 12345_, Вы писали:

_>Если вставлять AJAX-ом (XMLHttp), то не будет выполняться, если ноды, то, видимо, тоже — нужен eval(). Если вставлять как src тега script, то будет.


Никто про аякс и не заикался
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Если программист в рабочее время играет, значит —
либо у него мало работы и большая зарплата,
либо у него много работы и маленькая зарплата.
Re: Javascript в Javascript
От: ldarcy  
Дата: 24.12.06 04:32
Оценка:
Здравствуйте, Dizzy, Вы писали:

D>Подскажите почему не выполняется динамически вставленный Javascript?


D>
D><html>
D>    <body>
D>        <div id='#testdiv'>Click a button to fill this DIV</div></br>
D>        <button onclick='BClick()'>Fill</button>
D>        <script language=javascript>
D>        <!--
D>        function BClick()
D>        {
D>            var TDiv = document.getElementById("#testdiv")
D>            if (TDiv)
D>                TDiv.innerHTML = "Alert<script language=javascript>alert('Hello world!!!')</script>"
D>        }
D>        //-->
D>        </script>
D>    </body>
D></html>
D>


D>Просто по условию задачи программа может делать всё что угодно но в своём диве, ID которого предварительно оговаривается с заказчиком. Нужно динамически наполнить этот див html элементами, а также добавить скрипт, в скрипте есть глобальные переменные, и оборачивать скрипт как одну функцию крайне нежелательно. Кто что посоветует?


Используй DEFER во вложенном скрипте: <script DEFER language=javascript>
Re[2]: Javascript в Javascript
От: swerg2  
Дата: 10.01.07 13:44
Оценка:
Здравствуйте, товарышы, Вы писали:

D>>Подскажите почему не выполняется динамически вставленный Javascript?



попробуйте так:

TDiv.innerHTML = "Alert<script language=javascript>alert('Hello world!!!')</scr"+"ipt>"
Каждый ламер мечтает стать хакером ;-))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.