Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.11.2013, 23:03
Интересующийся
Отправить личное сообщение для potomuchto Посмотреть профиль Найти все сообщения от potomuchto
 
Регистрация: 10.11.2013
Сообщений: 12

Подкючение ситилей и скриптов из js
Здравствуйте, у меня в javascript генерируется ссылка на файлы js и css, на основе которых стоит страница, но подключать их обычным

<script src="URL"></script>

возможности нету. Подскажите пожалуйста как можно подключить их так, как будто они были подключены как обычно, при начале загрузки страницы.

Я гуглил разные решения, одно из них загружало скрипт по сылке, вставляло его в хэд, но обращаться к функциям того файла не получалось - оно их не видело

А другое решение требует что бы нужные функции я запускал сразу в определенном месте, а в файле, они, само собой, раскиданы везде. Вот это рещение:

<script type="text/javascript" src="http://scriptjava.net/source/scriptjava/scriptjava.js"></script>

.....
$$i({
        attribute: {//устанавливаю атрибуты
                'type':'text/javascript',
                'src': str
        },
        onready:function() {//действие по окончании подключения скрипта
			alert(1);
		}
	});
Ответить с цитированием
  #2 (permalink)  
Старый 30.11.2013, 00:03
Новичок на форуме
Отправить личное сообщение для jssj Посмотреть профиль Найти все сообщения от jssj
 
Регистрация: 02.11.2013
Сообщений: 6

если генерируется в момент загрузки страницы то тогда там же прописывай
document.write('<script src="URL"></script>');

тоже самое и со стилями

еще есть метод вот такой

$$($$s.getelbytag('head')[0],'<script src="URL"></script>');


или

$$i({
		create:'style',
		attribute: {'type':'text/css'},
		insert:$$s.getelbytag('head')[0]
	}).$$('a.vk_link:hover{color:#ff0000 !important;}');


а вообще тут даже если ничего не писать в onready все равно будет работать
и посмотри и со своим сравни, ты забыл create:'script'

$$i({
		create:'script',
		attribute: {
			'type':'text/javascript',
			'src':'script.js'
		},
		insert:$$().body,
		onready:function() {
			//пусто
		}
	});
Ответить с цитированием
  #3 (permalink)  
Старый 30.11.2013, 09:52
Интересующийся
Отправить личное сообщение для potomuchto Посмотреть профиль Найти все сообщения от potomuchto
 
Регистрация: 10.11.2013
Сообщений: 12

<html>
<head>
<script>
$$i({
		create:'script',
		attribute: {
			'type':'text/javascript',
			'src': './s.js'
		},
		insert:$$().body,
		onready:function() {
			say("1234");
		}
	});
</script>
</head>
<body>
<br>
	<script>
		say("124");
	</script>
</body>
</html>


Файл s.js:
function say(a){
	alert(a);
}


В итоге консоль пишет say() is not defined на строке, в которой стоит say("124"), а первый say отрабатывает нормально.

Где я ошибаюсь?
Ответить с цитированием
  #4 (permalink)  
Старый 30.11.2013, 10:53
Новичок на форуме
Отправить личное сообщение для jssj Посмотреть профиль Найти все сообщения от jssj
 
Регистрация: 02.11.2013
Сообщений: 6

скрипты пишутся после <body> и ссылка на скрипт должна быть норм ../s.js
Ответить с цитированием
  #5 (permalink)  
Старый 30.11.2013, 11:02
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,604

potomuchto, вот что тебе нужно не понятно, ты пишешь "подключать их обычным <script src="URL"></script> возможности нету", и в то же время засовываешь туда 10 строк кода, определись уже что тебе нужно...
Ответить с цитированием
  #6 (permalink)  
Старый 30.11.2013, 13:27
Интересующийся
Отправить личное сообщение для potomuchto Посмотреть профиль Найти все сообщения от potomuchto
 
Регистрация: 10.11.2013
Сообщений: 12

Да, не совсем точно выразился, согласен. По сути библиотеки, которые нужны для подгрузки моих основных скриптов можно подключать как у годно и где угодно. Самое главное, что бы основные файлы со скриптами подключались самим джаваскриптом. Вот я написал приблизительно то, что происходит. Мой жс определяется какой файл именно ему нужен, а потом подключает этот нужный файл.

Конкретно по работе этого скрипта(который ниже) я прокомментировал где работает, а где нет. Онклик событие тоже работает. Под этим скриптом лежит содержимое каждого из подключаемых файлов (да, отличаются только цифры)

<html>
<head>
	<script type="text/javascript" src="http://scriptjava.net/source/scriptjava/scriptjava.js"></script>
</head>
<body>
	<script>
	
	function randomNumber (m,n){
		m = parseInt(m);
		n = parseInt(n);
		return Math.floor( Math.random() * (n - m + 1) ) + m;
	}
	
	var num = randomNumber(1,3);
	
	alert(num);
	src = 'http://localhost/s'+num+'.js';
	
	$$i({
		create:'script',
		attribute: {
			'type':'text/javascript',
			'src': src
		},
		insert:$$().body,
		onready:function() {
			alert(say()); //тут работает
		}
	});

	</script>
	
	<div style="width: 100px; height: 100px; background-color: red;">
		123
		<script>
			alert(say());//тут: "say() is not defined"
		</script>
	</div>
</body>
</html>

.......
s1.js :

function say(){
	return 1111;
}

s2.js :

function say(){
	return 2111;
}

s3.js :

function say(){
	return 31111;
}
Ответить с цитированием
  #7 (permalink)  
Старый 01.12.2013, 13:02
Интересующийся
Отправить личное сообщение для potomuchto Посмотреть профиль Найти все сообщения от potomuchto
 
Регистрация: 10.11.2013
Сообщений: 12

Функция, которая прежде не работала отрабатывает после подключения файла, я это увидел, поставив таймаут на выполнение в одну секунду. После секунды функция отсюда нормально отработала:
<div style="width: 100px; height: 100px; background-color: red;">
        123
        <script>
          	var timer = setTimeout(function(){	
		   alert(say("it works"));
		}, 1000*1);
        </script>
    </div>


Но прописывать таймаут каждой функци не варинат. Как можно сделать так, что бы функции в коде начинали свою работу только после завершения подключения скрипта. Может какое-то событие создать в onready, которая стоит при подключении файла?

$$i({
        create:'script',
        attribute: {
            'type':'text/javascript',
            'src': url
        },
        insert:$$().body,
        onready:function() {
            //тут
        }
    });
Ответить с цитированием
  #8 (permalink)  
Старый 01.12.2013, 13:15
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от potomuchto
onready
onload
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 01.12.2013, 18:39
Интересующийся
Отправить личное сообщение для potomuchto Посмотреть профиль Найти все сообщения от potomuchto
 
Регистрация: 10.11.2013
Сообщений: 12

спасибо
Ответить с цитированием
  #10 (permalink)  
Старый 01.12.2013, 23:56
Новичок на форуме
Отправить личное сообщение для jssj Посмотреть профиль Найти все сообщения от jssj
 
Регистрация: 02.11.2013
Сообщений: 6

<script>
$$r(function() {
  //тут код который выполниться после загрузки
}); 
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение своих js скриптов в Chrome на любых сайтах avramch Opera, Safari и др. 5 28.07.2016 16:11
Копирование Js скриптов qwertyser Общие вопросы Javascript 5 13.12.2012 11:39
Несколько простых скриптов JS koshsh Работа 1 08.05.2012 19:58
Исправить конфликт js скриптов в IE anreyyyy Работа 3 29.11.2011 20:41
Проблемы с подгрузкой новых JS скриптов на странцу OnArs Общие вопросы Javascript 2 05.10.2008 20:49