Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2014, 22:32
Аспирант
Отправить личное сообщение для 1lider Посмотреть профиль Найти все сообщения от 1lider
 
Регистрация: 12.04.2013
Сообщений: 86

Вызвать функцию из подключенного 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");
}
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2014, 22:45
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

1lider, используй событие load. Подробности тут.
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2014, 22:50
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

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();
	};
}
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2014, 23:41
Аспирант
Отправить личное сообщение для 1lider Посмотреть профиль Найти все сообщения от 1lider
 
Регистрация: 12.04.2013
Сообщений: 86

БлагоДарю Вас от Души. Очень помогли.

Последний раз редактировалось 1lider, 06.07.2014 в 23:48.
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2014, 17:39
Аспирант
Отправить личное сообщение для 1lider Посмотреть профиль Найти все сообщения от 1lider
 
Регистрация: 12.04.2013
Сообщений: 86

А что если сделать вот так:

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;
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2014, 22:14
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

1lider,
спрашиваешь про одно, а пишешь про другое. При чем здесь загрузка скриптов
$.get( "http://site.ru/test.php?callback=my_test", function( data ) {
	alert(data);
});
Ответить с цитированием
  #7 (permalink)  
Старый 08.07.2014, 16:41
Аспирант
Отправить личное сообщение для 1lider Посмотреть профиль Найти все сообщения от 1lider
 
Регистрация: 12.04.2013
Сообщений: 86

Цитата:
спрашиваешь про одно, а пишешь про другое.
Прошу прощения если не по теме. У меня остался последний вопрос, относительно этого:

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.
Ответить с цитированием
  #8 (permalink)  
Старый 08.07.2014, 17:50
Аспирант
Отправить личное сообщение для 1lider Посмотреть профиль Найти все сообщения от 1lider
 
Регистрация: 12.04.2013
Сообщений: 86

Единственный вариант который пока приходит в голову, это проверка существования функции my_function().
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как через динамическую втавку в страницу автоматически вызвать функцию javascript? Roberts AJAX и COMET 2 19.03.2013 12:32
Вызвать из JS ASP скрипт AlienK Общие вопросы Javascript 1 04.03.2010 12:28
Как вызвать OpenDialog через JS? Некто Элементы интерфейса 6 26.11.2009 14:17
как вызвать функцию? pumpurumer jQuery 2 27.08.2009 19:39
js файл(незнаю как запустить функцию) Temchik Opera, Safari и др. 6 20.07.2009 11:49