powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / IE innerHTML - проблемы с записью значения script
9 сообщений из 9, страница 1 из 1
IE innerHTML - проблемы с записью значения script
    #36381093
dima.taburetkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
суть проблемы: при попытке засунуть в айфрейм значение начинающееся со "<script>"
скрипт вырезается как и не было. уже устал искать почему.
в мозиле подобная проблема не наблюдается.

вот небольшой пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<html>
<head></head>
<body>
<iframe name="if" id="if"></iframe><hr>
<textarea id="ta" name="ta"><script>var ogogo= 1 ;</script>some text</textarea><br>
<input type="button" value="chpok" onclick="javascript:do_evil();">
<script>
function do_evil(){
	var o_if = window.frames['if'];
	var o_ta = document.getElementById('ta');
	
	o_if.document.body.innerHTML = o_ta.value;
	alert(o_if.document.body.innerHTML);
	alert(o_if.document.documentElement.innerHTML);
	
	o_if.document.write(o_ta.value);
	alert(o_if.document.body.innerHTML);
	alert(o_if.document.documentElement.innerHTML);

}
</script>
</body>
</html>

использую два способа.
1) innerHTML - тут глухо. скрипт просто вырезается как и не было.
2) метод write, тут уже лучше. скрипт при первом проходе попадает в хед.
теоритически можно вырезать тег хед через removechild но в ие это можно сделать всего 1 раз. на второй раз ие валится с ошибкой "неизвестная ошибка"

хохмма в том, что если перед <script> написать что-нибудь (например пару буковок) то он прекрасно вставится и через innerHTML и как угодно.
и задача в данном случае не потерять теги при переносе значений туда и обратно из айфрейма в текстарею и наоборот и не назасовывать лищнего(поэтому не устраивает вариант со вставкой буковок или нбсп).
причем насколько мне известно <script> не единственный тег который ведет себя подобным образом.

пробовал сувать ради интереса в див. там тоже скрипт вырезается.

вобщемто если ткнете носом где почитать как бороться с этой проблемой и почему так происходит, буду признателен.

зыж
а если в innerHTML засунуть '<p><hr></p>' то тоже ошибка получится.
...
Рейтинг: 0 / 0
IE innerHTML - проблемы с записью значения script
    #36381112
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно же в первоисточнике
MSDNWhen using innerHTML to insert script, you must include the DEFER attribute in the script element.

С уважением, Vasilisk
...
Рейтинг: 0 / 0
IE innerHTML - проблемы с записью значения script
    #36381425
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Конечно же в первоисточнике
MSDNWhen using innerHTML to insert script, you must include the DEFER attribute in the script element.

С уважением, Vasilisk
А там примерчик ИЕ онли, так что разрулить это дело потребуется.
...
Рейтинг: 0 / 0
IE innerHTML - проблемы с записью значения script
    #36381588
dima.taburetkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_, к сожалению DEFER никак не решает проблему.
если innerHTML пустой то при присвоении в него '<script DEFER>блаблабла</script> всякое разное'
для дива и айфрейма <script DEFER>блаблабла</script> будет нещадно вырезан и там останется только ' всякое разное'

при использовании метода write для айфрейма в первую итерацию в body будет записано ' всякое разное' и в head будет записан <script>блаблабла</script>

на второй итерации <script>блаблабла</script> будет записан уже в body независимо от того пустой body или нет приэтом он естественно будет еще и в head

для решения моей задачи подойдет такой метод:
Код: plaintext
1.
2.
3.
4.
	o_if.document.body.innerHTML='';
	o_if.document.write(o_ta.value);
	o_if.document.body.innerHTML='';
	o_if.document.write(o_ta.value);

после этой операции <script DEFER>блаблабла</script> будет как в хеад так и в боди.
но мне не нравится в этом то, что происходит две записи вместо одной. чисто эстетически.
ну и конечно огорчает, что я не понимаю почему так происходит.
и еще один момент.
сейчас запись в div.innerHTML меня не заботит, меня волнует именно iframe, но вот что делать если все ж придется с дивом проделывать тоже самое?

короче говоря - печаль :(
...
Рейтинг: 0 / 0
IE innerHTML - проблемы с записью значения script
    #36382574
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял, что Вы во второй части марлезонского балета планируете дернуть то, что внутри <script>? Если да - то одним innerHTML не обойдетесь.
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IE innerHTML - проблемы с записью значения script
    #36383424
dima.taburetkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft
Я так понял, что Вы во второй части марлезонского балета планируете дернуть то, что внутри <script>? Если да - то одним innerHTML не обойдетесь.
_________________
"Helo, word!" - 17 errors 56 warnings


Да нет. выполнять не придется.
я вообще столкнулся с этой проблемой отлаживая какой-то ричтекстэдитор заточенный на ие.
просто случайно заметил, что теряются скрипты при переключении между текстареей и айфреймом.
ну и в связи с этим стал копаться как сделать так штоп не срезались.

больше всего удивило то, что не смог сходу нагуглить ответ. такое ощущение что эта проблема у меня у первого, а в это не верится.
...
Рейтинг: 0 / 0
IE innerHTML - проблемы с записью значения script
    #36383472
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dima.taburetkin_Vasilisk_, к сожалению DEFER никак не решает проблему.
если innerHTML пустой то при присвоении в него '<script DEFER>блаблабла</script> всякое разное'
для дива и айфрейма <script DEFER>блаблабла</script> будет нещадно вырезан и там останется только ' всякое разное'Вы ссылку читали? Как там сказано сделали?

Ладно, даю подсказку
Код: plaintext
innerHTML = "<div style='display:none'>dummy</div><script defer='defer'>.....";
...
Рейтинг: 0 / 0
IE innerHTML - проблемы с записью значения script
    #36383745
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для случая <script></script> only
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<html>
	<head>
		<title>Main Form</title>
		<script type="text/javascript">
<!--
function DoIt()
{
	var
		frm,
		Ctrl,
		s="\n<!--\nvar\n\tTestVar=99;\n\nfunction Test()\n{\n\talert('Test ('+TestVar+')');\n}\n// -->\n";

	if(!(frm=document.getElementById("IFrame1"))
		|| !(Ctrl=frm.contentWindow.document.createElement("script")))
		return;

	Ctrl.text=s;
	frm.contentWindow.document.body.appendChild(Ctrl);
}

function CallTest()
{
	var
		frm;

	if(!(frm=document.getElementById("IFrame1")))
		return;

	frm.contentWindow.Test();
}
// -->
		</script>
	</head>
	<body>
		<iframe id="IFrame1" src="iframe1.html"></iframe><br>
		<input type="button" value="DoIt!" onclick="DoIt()">
		<input type="button" value="call Test" onclick="CallTest()">
	</body>
</html>
Mozilla Firefox 3.5.6, M$ IE 6.0.2900.2180.xpsp_sp2_rtm040803-2158
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IE innerHTML - проблемы с записью значения script
    #36384992
dima.taburetkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_dima.taburetkin_Vasilisk_, к сожалению DEFER никак не решает проблему.
если innerHTML пустой то при присвоении в него '<script DEFER>блаблабла</script> всякое разное'
для дива и айфрейма <script DEFER>блаблабла</script> будет нещадно вырезан и там останется только ' всякое разное'Вы ссылку читали? Как там сказано сделали?

Ладно, даю подсказку
Код: plaintext
innerHTML = "<div style='display:none'>dummy</div><script defer='defer'>.....";


ой, ссылку? ннннет, не обратил внимания
а как там сказано?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / IE innerHTML - проблемы с записью значения script
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]