|
|
|
| пишу маленький скрипт и встретил вот такой вопрос:
как добавить скрипт на страницу?
Исходные данные такие:
имеется поле textarea, которая при изменении её содержимого, выводит это содержимое в какой-то блок, например, div
Задача:
как написать в этом поле textarea например такой скрипт:
<script language="javascript">
<!--
function func() {
alert('O-o-o-o-ps!');
}
// -->
</script>
<a href="javascript:func()">Link me =)</a>
|
и чтобы при нажатии на ссылку Link me =)(в результирующем "диве") выскакивало это "алёртовое" окошко c текстом?
с другой стороны, вот такой код работает без проблем:
<a href="javascript:alert('123')">Link me =)</a>
|
сам скрипт добавления в элемент div выглядит так:
function somefunc() {
var stxt = document.getElementById("stxt").value;
var rtxt = document.getElementById("rtxt");
rtxt.innerHTML = stxt;
}
|
| |
|
|
|
|
|
|
|
для: retsoul
(07.12.2007 в 11:39)
| | Во-первых, перед выводом содержимого TEXTAREA необходимо изменить это содержание таким образом, чтобы все 'SCRIPT' превратились в 'SCR' + 'IPT'.
Во-вторых, к "вживляемому" тегу <SCRIPT> необходимо добавлять атрибут DEFER
Это можно реализовать, например, так:
var stxt = document.getElementById ("stxt").value.replace (/\<script/ig, "<script defer").replace (/script/g, "scr' + 'ipt");
|
| |
|
|
|
|
|
|
|
для: CNT
(07.12.2007 в 11:54)
| | было бы очень здоровски, если бы вы ещё пояснили для чего мы это делаем? :)
проверил этот код, модифицировав его тами образом:
function somefunc() {
var stxt = document.getElementById("stxt").value;
stxt = stxt.replace(/\<script/ig, "<script defer") .replace (/script/g, "scr' + 'ipt");
var rtxt = document.getElementById("rtxt");
rtxt.innerHTML = stxt;
}
|
всё правильно отображается в Лисе, но сам код не работает, так как при наведении на ссылку отображается вот такая вот лабуда:
http://localhost/javascr' + 'ipt:func(),
в седьмом ИЕ глючит и ссылку не показывает
в опере 9.5 - таже история, что и с ФаерФоксей
ещё вопрос что мы получаем используя в одной строке 2-а обращения к функции replace()?
заменяем один раз, а потом результат ещё раз изменяем? | |
|
|
|
|
|
|
|
для: retsoul
(07.12.2007 в 12:05)
| | ещё поэксперементировал с кодом:
function somefunc() {
var stxt = document.getElementById("stxt").value;
stxt = stxt.replace(/\<script/ig, "<script defer");
var rtxt = document.getElementById("rtxt");
rtxt.innerHTML = stxt;
}
|
вот такой вариант в ИЕ 7 работает,
а в FF 3b1 и Opera 9.5 - не работает :(
как его сделать универсальным? :) | |
|
|
|
|
|
|
|
для: retsoul
(07.12.2007 в 12:45)
| |
if(window.event) // IE
{ stxt= [for IE browser] }
else if(e.which) // Netscape/Firefox/Opera
{ stxt= [for ELSE browsers] }
|
| |
|
|
|
|
|
|
|
для: MIchail1982
(07.12.2007 в 13:26)
| | приму к сведенью :)
а что скрывается под надписью [for ELSE browsers]?
ответ желателен в виде кода :)
а то, что-то пока у самого не получается сделать так, чтобы в FF и Opere запахал тот скрипт, что выше :( | |
|
|
|
|
|
|
|
для: retsoul
(07.12.2007 в 13:30)
| | какие вобще есть варианты приспособления этого кода для ФФ и Оперы? :)
может у них не поддерживается внедрение скриптов или опять таки нужно что-то добавлять? :) | |
|
|
|
|
|
|
|
для: retsoul
(07.12.2007 в 13:57)
| | сорри, я по кросс не очень :0( | |
|
|
|
|
|
|
|
для: MIchail1982
(07.12.2007 в 14:11)
| | да ладно, все мы не всегда можем сразу сверстать, спрограммировать кроссбраузерный сайт, скрипт :)
вот я сейчас и ищу, как это сделать, только вот почти никто не откликается, наверно тоже не знают :) | |
|
|
|
|
|
|
|
для: retsoul
(07.12.2007 в 11:39)
| | заметил ещё одну странность:
в ие 7 не работает до тех пор, пока перед скриптом не будет что-нибудь написано
ну что, есть тут кто, кто знает в чём дело или хотя бы интересно? :) | |
|
|
|