Динамическое подключение скрипта
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Динамическое подключение скрипта Expand / Collapse
Автор
Сообщение
31.10.2006 19:02
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 24.01.2008 14:59
Сообщ.: 68, Visits: 545
Задача такая: динамически подключать внешний скрипт .js.

Пробовал несколько вариантов - ни один не заработал(

1. вариант

// обращение к
<SCRIPT></SCRIPT> по id
s = document.getElementById('s_id');
s.src = '/script.js';

2. вариант

s = document.createElement("SCRIPT");
body.appendChild(s);
s.language = "JavaScript";
s.src = '/script.js';

по серверным логам видно, что в обоих вариантах не происходило обращение к данному скрипту

Сообщ. #906730
01.11.2006 11:10
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Вот работающий пример:

<html><head>
<title>зи тест</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="javascript" type="text/javascript">
function createScript(scriptSrc)
{
 var span = document.createElement('SPAN');
 span.style.display = 'none';
 document.body.insertBefore(span, document.body.lastChild);
 span.innerHTML = 'Text for stupid IE.<s'+'cript></' + 'script>';
 setTimeout(function() {
     var s = span.getElementsByTagName('script')[0];
     s.language = 'JavaScript';
     if (s.setAttribute) s.setAttribute('src', scriptSrc); else s.src = scriptSrc;
 }, 10);

}
</script>
</head>
<body>
<input type="button" onclick="createScript('hello.js')" value='Click me'>
</body></html>

Реализация взята из библиотеки JsHttpRequest.

Сообщ. #906747
01.11.2006 11:55
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 24.01.2008 14:59
Сообщ.: 68, Visits: 545
хм...именно оттуда я этот кусок брал пробовать и ничего не работало. сейчас еще раз попробовал - работает). что-то пропустил. спасибо огромное)
Сообщ. #906751
01.11.2006 12:07
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 24.01.2008 14:59
Сообщ.: 68, Visits: 545
и еще один вопрос по теме. данные, которые я передаю в подгружаемом скрипте, отображаются только после повторной подгрузки скрипта.

например скрипт подгружется по onfocus. при первом событии ничего не происходит, хотя к скрипту идет обращение. при повторном событии - все нормально. тоже самое если обновляются данные в подгружаемом скрипте - т.е. при первом событии отобрадаются старые данные, а при поторном событии - уже новые.
Сообщ. #906753
01.11.2006 16:10
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Не знаю даже. Может это результат кеширования?
Сообщ. #906761
01.11.2006 16:53
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 24.01.2008 14:59
Сообщ.: 68, Visits: 545
Порасставлял таймера по коду - с ними работает. Подозрительно. Остался плохой осадок.
Сообщ. #906767
21.11.2006 18:23
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 13.04.2007 16:44
Сообщ.: 34, Visits: 87
<div id='MyDiv' style='behavior:url(#default#download)'></div>

<script>
function Import(strURL){
    MyDiv.startDownload(strURL,new Function('contents','MyDiv.innerHTML=contents'))
    }
</script>

<a href=javascript:void(0) onclick=Import('file.txt')>text1</a><br>

//file.txt

<p id='ppp'>ffff
<script defer>
document.all.ppp.insertAdjacentHTML("afterEnd","<p>Строка 2");
</script>

//IE defer или таймкоды

Сообщ. #907805
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 7:36