Jump to content
  • 0

Динамическая загрузка и исполнение скриптов


nim
 Share

Question

Как подключить к документу внешний файл скрипта, после загрузки документа, т.е. document.write не канает.

и еще вопрос почему если я присваиваю любому тегу innerHTML = "

" то алерт не срабатывает?
Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

У меня есть текстовый редактор, хочу чтобы скрипт инициализации сработал при его создании, причем создавать при помощи dom я не могу, могу лишь через innerHTML. странно что события ГУИ типа onclick работают а onload нет.

Link to comment
Share on other sites

  • 0

А если так:

<html><body>

<div id="container"></div>

<script type='text/javascript'>

function func() {
var q = document.getElementById('alert');
if (q != null && q !== undefined) { alert("ok"); }
else { setTimeout(function() { func(); }, 0); }
}
func();

container.innerHTML = "<textarea id="alert"></textarea>"

</script>

</body></html>

Link to comment
Share on other sites

  • 0

Нда. Если Вы не заметили, то он запускается сразу(func();) и проверяет на существование элемент с id="alert". Если элемента ещ? нет - функция запускается по новой, а как только Ваш скрипт его создаст, условие выполнится и Вы увидите сообщение.

Link to comment
Share on other sites

  • 0

все понял принцип. архитектурно такое решение не очень :D. + дело еще в том что скрипт инициализации не я пишу, я даже не могу знать название функции инициализации :), вобщем спасибо за помощь, я решил повесить инициализацию на кнопку которая показывает этот редактор.

Link to comment
Share on other sites

  • 0

1) В самом конце документа стоит вызов функции загрузки скрипта. Ява скрипты на странице срабатывают ПО МЕРЕ ИХ ЗАГРУЗКИ. Тоесть не после того, как вся страница загрузилась, а последовательно.

2) Поставь алерт после закрывающего дива и вс?. Тоесть Ява Скрипт. В н?м может быть алерт, вызов какой-то функции... Да что угодно. Если он сработал, значит вс?, что в диве - уже загружено. Если это фрейм - то вызов внешней функции через parent поможет.

3) Событие OnLoad есть у Body

Link to comment
Share on other sites

  • 0

Вот так я выкрутился, перед установкой html я ищю в нем скрипты и инициализирую их через DOM перед установкой.

function Transform()
{
var tmp = 'Некий динамический штмл + скрипт для установки в innerHTML';
var res = "";
var i = 0;

for (; i < tmp.length; ++i)
{
var ind1 = tmp.indexOf("<script", i);
if (ind1 != -1)
{
var ind2 = tmp.indexOf("</script>", ind1);
if (ind2 != -1)
{
ind2 += 9;
res += tmp.substring(i, ind1);
InitSript(tmp.substring(ind1, ind2));
i = ind2 + 1;
}
else
{
break;
}
}
else
{
break;
}
}

res += tmp.substr(i);

f_container.innerHTML = res;
}

function InitSript(scr)
{
var ind1 = scr.indexOf(">", 0);
var ind2 = scr.indexOf("</script>", ind1);
if (ind1 == -1 || ind2 == -1) return;

var sbody = scr.substring(ind1 + 1, ind2);
var ss = d.getElementsByTagName("script");

for (var i = 0; i < ss.length; ++i)
{
if (sbody == ss[i].text)
{
return;
}
}

var newScript = d.createElement('script');
newScript.type = "text/javascript";
d.body.appendChild(newScript);
newScript.text = sbody;
}

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy