Вызвать функцию из подключенного js файла
Здравствуйте!
У меня есть два файла main.js и second.js. Как правильно подключить к html странице файл second.js и вызвать расположенную в нём функцию my_function();? Подключаю таким способом: Файл main.js var new_script = document.createElement('script'); new_script.type = 'text/javascript'; new_script.src = 'http://site.ru/second.js'; var head = document.head || document.getElementsByTagName('head')[0]; head.appendChild(new_script); // дальше сразу же вызываю функцию расположенную в файле second.js // выходит следующая ошибка - Предполагается наличие объекта my_function(); Файл second.js function my_function() { alert("HELLO"); } |
1lider, используй событие load. Подробности тут.
|
if (new_script.readyState) { new_script.onreadystatechange = function () { if (new_script.readyState == "loaded" || new_script.readyState == "complete") { new_script.onreadystatechange = null; my_function(); } }; } else { new_script.onload = function () { my_function(); }; } |
БлагоДарю Вас от Души. Очень помогли.
|
А что если сделать вот так:
var new_script = document.createElement('script'); new_script.type = 'text/javascript'; new_script.src = 'http://site.ru/test.php?callback=my_test'; var head = document.head || document.getElementsByTagName('head')[0]; head.appendChild(new_script); Как потом вызвать функцию callback, пришедшую от сервера и вывести на алерт массив в ней содержащийся? На сервере делаю следующее(файл test.php): $result = array('result' => 'Hello world!'); echo $_GET['callback']."(".json_encode($result).")"; exit; |
1lider,
спрашиваешь про одно, а пишешь про другое. При чем здесь загрузка скриптов $.get( "http://site.ru/test.php?callback=my_test", function( data ) { alert(data); }); |
Цитата:
if (new_script.readyState) { new_script.onreadystatechange = function () { if (new_script.readyState == "loaded" || new_script.readyState == "complete") { new_script.onreadystatechange = null; my_function(); } }; } else { new_script.onload = function () { my_function(); }; // сюда можно добавить следующее(не для IE) new_script.onerror = function () { alert("Опс..'); }; } Для отлова ошибок для всех браузеров(кроме IE), можно поставить .onerror. А как отлавливать ошибку в IE? Даже если скрипт не подлючился, new_script.readyState всё равно возвращает loaded. |
Единственный вариант который пока приходит в голову, это проверка существования функции my_function().
|
Часовой пояс GMT +3, время: 17:26. |