Вызвать функцию из подключенного 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, время: 22:10. |