Динамическое добавление вызова функции в тег

  • Автор темы Lesik198199
  • Дата начала
Статус
Закрыто для дальнейших ответов.
L

Lesik198199

Гость
#1
Пытаюсь динамически прикрепить скрипт к документу, загруженному во фрейм, с помощью innerHTML.
Функция заключается в том, что по клику на любой элемент документа, загруженного во фрейм, возвращается id этого
элемента в переменную, описанную в родительском документе. Вызов функции прикрепляю к тегу боди документа, загруженного во фрейм.
Проблема в том, что написано вроде верно, а рабоать не работает..голову сломала, не вижу ошибки..Может кто поможет...Спасибо!
HTML:
<html>
<head>
<script language="JavaScript">
var t=799;
<!--
function Пример(){
var s;
b=frames['MyIFRAME'].document;
b.body.innerHTML=b.body.innerHTML+'<script language="JavaScript">function element(){var ElemEv;ElemEv=self.event.srcElement.id; alert(self.parent.t)}</script>';
s=b.body.outerHTML.substring(1, 5) +' onclick="element()">';
b.body.outerHTML = s + b.body.innerHTML+'</body>';

}
-->
</script>
</head>
<body>

<iframe name="MyIFRAME" src="proba.htm" onload="Пример()"></iframe>

</body>
</html>
 
L

Lesik198199

Гость
#3
<!--QuoteBegin-Andrew Stephanoff+23:02:2006, 09:36 -->
<span class="vbquote">(Andrew Stephanoff @ 23:02:2006, 09:36 )</span><!--QuoteEBegin-->Попробуй реализовать через DOM.
[snapback]30978" rel="nofollow" target="_blank[/snapback]​
[/quote]
А поподробнее можно, пожалуйста?
 
A

Andrew Stephanoff

Гость
#4
Лучше определи свою функцию во внешнем файле и подключай так:
Код:
...
var oScript = document.createElement("SCRIPT");
oScript.type = "text/javascript";
oScript.src = "path/to/script";
document.getElementsByTagName("BODY")[0].appendChild(oScript);
...
но можно генерировать и на лету
Код:
...
var oScript = document.createElement("SCRIPT");
oScript.type = "text/javascript";
oScript.text = "alert(\"Halo, world!\");";
document.getElementsByTagName("BODY")[0].appendChild(oScript);
...
 
G

Guest

Гость
#5
Вот работающий пример:

КОД IFRAME:
Код:
<HTML>
<HEAD>
<TITLE></TITLE>

</HEAD>

<BODY>
<DIV id="conteiner"></DIV>
</BODY>
</HTML>
КОД СТРАНИЦЫ:
Код:
<html>
<head>
<script language="JavaScript">
var t=799;

function Test(){
var t=799;

b=document.frames?document.frames['MyIFRAME']:document.getElementById("MyIFRAME").contentWindow;

d = ' ' + '<sc' + 'ript>function element(){alert(t)}' +
'element();</sc' + 'ript>' + ' ';

h = d.replace(/<\/?script>/gi,"\07").replace(/\07[^\07]+\07/g,"");
a = ("\07"+
d.replace(/<\/script[^>]*>/gi,"\07").replace(/<\bscript>/gi,"\06")+
"\06").replace(/\07[^\06]+\06/g,"");

eval(a);

b.document.getElementById('conteiner').innerHTML=h;


}

</script>
</head>
<body>

<iframe id="MyIFRAME" name="MyIFRAME" src="proba.html" onload="Test()"></iframe>

</body>
</html>
 
S

scuter

Гость
#7
У меня похожая проблема
я прикрепляю к элементу фрейма функцию,
всё работает до тех пор пока в него не начнёт загружаться новая страница,
на обычных страницах проблема решаема просто надо перезагрузить страницу,
но в диалоговых окнах (showModalDialog) ничего не получается сраницы просто не хотят перезагружаться помогите пожалуйста решить эту проблему!!!!
Код:
<html>
<head>
<script type="text/javascript">
function fresh() 
{
if (frames.sitemenu.event.srcElement.className == "a")
{
document.getElementById("test").value = frames.sitemenu.event.srcElement.id;
}
}
function generfun()
{
window.execScript("document.frames.sitemenu.document.attachEvent('onclick', function(){fresh()});", "Javascript");
}
</script>
</head>
<body>
<input type="text" size="50" id="test" value="" /><br>
<iframe width="200px" height="620px" src="menu.php" name="sitemenu" id="sitemenu"></iframe>
</body>
</html>
 
Статус
Закрыто для дальнейших ответов.