nim Posted July 10, 2007 Report Share Posted July 10, 2007 Как подключить к документу внешний файл скрипта, после загрузки документа, т.е. document.write не канает.и еще вопрос почему если я присваиваю любому тегу innerHTML = "" то алерт не срабатывает? Link to comment Share on other sites More sharing options...
0 PacMan Posted July 10, 2007 Report Share Posted July 10, 2007 1. document.body.onload = function(event){ var newScript = document.createElement('script'); newScript.type = "text/javascript" newScript.src = "путь к внешнему скрипту" document.body.appendChild(newScript) return null;}2. у дива нет события onload Link to comment Share on other sites More sharing options...
0 nim Posted July 10, 2007 Author Report Share Posted July 10, 2007 1. Работает спасибо.2. Не работает<html><body><div id="container"></div><script type='text/javascript'>container.innerHTML = "<textarea onload="alert("ok")"></textarea>"</script></body></html> Link to comment Share on other sites More sharing options...
0 PacMan Posted July 10, 2007 Report Share Posted July 10, 2007 А ч? вы сделать то пытаетесь? Link to comment Share on other sites More sharing options...
0 nim Posted July 10, 2007 Author Report Share Posted July 10, 2007 У меня есть текстовый редактор, хочу чтобы скрипт инициализации сработал при его создании, причем создавать при помощи dom я не могу, могу лишь через innerHTML. странно что события ГУИ типа onclick работают а onload нет. Link to comment Share on other sites More sharing options...
0 yopopt Posted July 10, 2007 Report Share Posted July 10, 2007 А если так:<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 More sharing options...
0 nim Posted July 10, 2007 Author Report Share Posted July 10, 2007 а как запустится этот скрипт? Link to comment Share on other sites More sharing options...
0 yopopt Posted July 10, 2007 Report Share Posted July 10, 2007 Нда. Если Вы не заметили, то он запускается сразу(func();) и проверяет на существование элемент с id="alert". Если элемента ещ? нет - функция запускается по новой, а как только Ваш скрипт его создаст, условие выполнится и Вы увидите сообщение. Link to comment Share on other sites More sharing options...
0 nim Posted July 10, 2007 Author Report Share Posted July 10, 2007 все понял принцип. архитектурно такое решение не очень . + дело еще в том что скрипт инициализации не я пишу, я даже не могу знать название функции инициализации , вобщем спасибо за помощь, я решил повесить инициализацию на кнопку которая показывает этот редактор. Link to comment Share on other sites More sharing options...
0 PacMan Posted July 11, 2007 Report Share Posted July 11, 2007 А у textarea есть событие onload??? Почитайте msdn. Link to comment Share on other sites More sharing options...
0 антигерой Posted July 11, 2007 Report Share Posted July 11, 2007 1) В самом конце документа стоит вызов функции загрузки скрипта. Ява скрипты на странице срабатывают ПО МЕРЕ ИХ ЗАГРУЗКИ. Тоесть не после того, как вся страница загрузилась, а последовательно.2) Поставь алерт после закрывающего дива и вс?. Тоесть Ява Скрипт. В н?м может быть алерт, вызов какой-то функции... Да что угодно. Если он сработал, значит вс?, что в диве - уже загружено. Если это фрейм - то вызов внешней функции через parent поможет.3) Событие OnLoad есть у Body Link to comment Share on other sites More sharing options...
0 nim Posted July 20, 2007 Author Report Share Posted July 20, 2007 Вот так я выкрутился, перед установкой 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 More sharing options...
Question
nim
Как подключить к документу внешний файл скрипта, после загрузки документа, т.е. document.write не канает.
и еще вопрос почему если я присваиваю любому тегу innerHTML = "
" то алерт не срабатывает?Link to comment
Share on other sites
11 answers to this question
Recommended Posts