Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   подгрузить файл скрипта на событие (https://javascript.ru/forum/events/3373-podgruzit-fajjl-skripta-na-sobytie.html)

Gvozd 13.04.2009 17:44

подозреваю, что более кросбраузерно будет атачить к head-у
вот код из статьи
function attachScript(id, src){
var element = dojo.doc.createElement("script")
element.type = "text/javascript"
element.src = src
element.id = id
document.getElementsByTagName("head")[0].appendChild(element)
}

Kolyaj 13.04.2009 17:47

Цитата:

Сообщение от Gvozd
подозреваю, что более кросбраузерно будет атачить к head-у

Без разницы.

LamerNo1 13.04.2009 17:47

не грузит :(
и ИЕ через раз
буду стучать бубном...

LamerNo1 13.04.2009 18:19

Цитата:

Сообщение от Gvozd (Сообщение 16557)
подозреваю, что более кросбраузерно будет атачить к head-у
вот код из статьи
function attachScript(id, src){
var element = dojo.doc.createElement("script")
element.type = "text/javascript"
element.src = src
element.id = id
document.getElementsByTagName("head")[0].appendChild(element)
}

а что это за dojo???

Gvozd 14.04.2009 00:34

я упо скопипастил код из статьи.
это часть фреймворка, и dojo.doc Это наврено обертка над document
в лданном случае можно спокойно писать document.createElement("script")

LamerNo1 14.04.2009 13:51

Цитата:

Сообщение от Gvozd (Сообщение 16583)
я упо скопипастил код из статьи.
это часть фреймворка, и dojo.doc Это наврено обертка над document
в лданном случае можно спокойно писать document.createElement("script")

Всем спасибо за подсказки... с кнопкой работает..
в идеале нужно чтоб работало на window.onload
дело в том что изначально срабатывает php script который определяет isset или !isset переменная, и если определена выводит documen.onload, который в свою очередь подгружает файл скрипта

работает:
<input type="button" onclick="loadscr1()">
<script>
function loadscr1() {
var scri = document.createElement('script');
scri.setAttribute('type', 'text/javascript');
scri.src = 'new/js/couscr/Script.js';
document.getElementsByTagName('head')[0].appendChild(scri);
}
</script>


не работает:
<script>
window.onload = function () {
loadscr1();
}
</script>
<script>
function loadscr1() {
var scri = document.createElement('script');
scri.setAttribute('type', 'text/javascript');
scri.src = 'new/js/couscr/Script.js';
document.getElementsByTagName('head')[0].appendChild(scri);
}
</script>


и через jquery пытался сделать не получилось..
так: <body onload="loadscr1()"> тоже не хотелось бы

Gvozd 14.04.2009 17:30

во втором варианте либо поменяй местами теги script, либо объедени их в один(тогда местами можно не менять)
рпоблема в том, что в момент, когда ты пытаешся повесить событие, функция loadscr1() еще не определена
Ее надо либо определить в более раннем блоке script
либо просто поместить в тот же блок(в таком случае она будет видна, даже если будет написана позже.но только если ее определять как ты написал)
<script>
function loadscr1() {
var scri = document.createElement('script');
scri.setAttribute('type', 'text/javascript');
scri.src = 'new/js/couscr/Script.js';
document.getElementsByTagName('head')[0].appendChild(scri);
}
window.onload = function () {
loadscr1();
}
</script>

LamerNo1 14.04.2009 19:42

пробовал поменять, ща еще попробую

x-yuri 15.04.2009 17:33

первый вариант, предложенный Kolyaj, у меня работает:
window.onload = function() {
	var s = document.createElement('script');
	s.src = '1.js';
	document.body.appendChild(s);
}

1.js:
alert(2);

проверял в ie 7, ff 3, opera 9. Либо у тебя более старые версии, либо специфический скрипт

LamerNo1 15.04.2009 20:21

Цитата:

Сообщение от x-yuri (Сообщение 16689)
первый вариант, предложенный Kolyaj, у меня работает:
window.onload = function() {
	var s = document.createElement('script');
	s.src = '1.js';
	document.body.appendChild(s);
}

1.js:
alert(2);

проверял в ie 7, ff 3, opera 9. Либо у тебя более старые версии, либо специфический скрипт

Так работает, но в файле скрипта обязательно должна быть прописана функция... тамскрипт не просто алерт :)
может попробовать таймаут выставить... секнду-две


Часовой пояс GMT +3, время: 08:43.