Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Отсрочить загрузку динамически вставленного скрипта (https://javascript.ru/forum/events/34854-otsrochit-zagruzku-dinamicheski-vstavlennogo-skripta.html)

leosert 22.01.2013 02:28

Отсрочить загрузку динамически вставленного скрипта
 
Здравствуйте. Буду очень рад любой релевантной помощи.

Существует страница примерного вида:
<head>
<script src="1.js">
<script src="3.js">
<script src="4.js">
</head>


Я расширением (но это по сути не так важно) вставляю на страницу скрипт
window.addEventListener('DOMContentLoaded', function() {
	var script = document.createElement('script');
	script.src = '2.js';
	document.getElementsByTagName('head')[0].appendChild(script);
});

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

Возможно, надо вставлять свой скрипт другим способом, или заставить сначала загрузить 1.js

Deff 22.01.2013 02:35

Цитата:

Сообщение от leosert
Существует страница примерного вида:

<head>
<script src="1.js">
<script src="3.js">
<script src="4.js">
</head>


Вы контент этих загружаемых скриптов менять можете ?
2. Почему Ваш скрипт не прописать в hider ?
3. Какой тайный смысл загрузки именно после первого ?(что меняется если загрузка после 4 ?

leosert 22.01.2013 02:39

1. могу менять контент скрипта 2.js
2. прописать не могу. доступа к странице нет. только через расширение динамически вставлять
3. в первом скрипте определение функции, которое используется во втором, например

update: "что меняется если загрузка после 4?" — там хитрая система зависимостей. но если получится загрузить после 4го, то возможно сработает. надо проверять

Deff 22.01.2013 02:50

Цитата:

Сообщение от leosert
— там хитрая система зависимостей. но если получится загрузить после 4го, то возможно сработает. надо проверять

:)

leosert 22.01.2013 03:02

Проверил. Нужно именно после 1го. Дело в том, что изначальная задача была загрузить свой скрипт, вместо того, что на странице:
<script src="1.js">
<script src="2.js">
<script src="3.js">
<script src="4.js">

т.е. загрузку 2.js я заблочил, а вставить ровно на его место свой не могу.
1. теоретически, я думаю, что можно сначала динамически вставить 1.js, а после него загрузить уже свой 2.js.
2. еще как вариант (но я не знаю, как это реализовать), можно попробовать в файле 2.js по таймеру? дождаться загрузки 1.js, а только после этого скормить браузеру его самого.
3. еще одна безумная идея — попробовать вставить как-то не динамически скрипт, но тут я совсем не имею представления, как это делать.

Искренне надеюсь на помощь :)

Deff 22.01.2013 03:32

leosert,
Дайте ссылку на сайт - гляну что можно сделать

И укажите, после каких тегов на странице, вы вставляете контент своег динамического

leosert 24.01.2013 00:51

Deff,
спасибо за отклик. Проблема решилась локально, т.е. относительно контента скриптов.

Кстати, расширение грузило скрипт 2.js после domcontentloaded, т.е. самым последним.


Часовой пояс GMT +3, время: 07:12.