@vGrabko99
html, css, js, php, golang, mysql

Как проверить загрузился ли скрипт?

Привет. Понравился мне очень стиль написания кода в Go.
Сейчас реализовываю аналог функции import (вот нахрена делегировать функцию если ни один из браузеров её не реализовал??!)

Мой код
var registrImport = {};

function imports(arr){
	arr.forEach(function(item) {
	  if (registrImport[item] == undefined){
         registrImport[item] = 0;
         loadJs(item);
      } 
    });
}

function loadJs(url){
	document.write('<script src="', url, '" type="text/JavaScript"><\/script>');
}


Делаю я тест импорта
var i = 0;
while (i <= 10){
i++;
imports([
	"test",
	"testing"
	]);
}


Мой код почему-то дважды шлёт запрос на "testing"
4a57e20208854d5ebc27c6e16d8cf2d5.png
Как это можно исправить?

Ещё не могу понять как "отловить" что скрипт загрузился или ошибку? (как сейчас 404 к примеру)
Зарание спасибо

UPD.
Если указать реальный урл то всё нормально.
Даже так :D
var i = 0;
		while (i <= 10){
		i++;
		imports([
			"/js/init.js",
			"/js/kernel/importer/importer.js",
			"https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js",
			"https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"
		]);
		}
  • Вопрос задан
  • 4484 просмотра
Решения вопроса 2
@sunrails
Ответ написан
Комментировать
@vGrabko99 Автор вопроса
html, css, js, php, golang, mysql
var registrImport = {};
registrImport["/js/kernel/importer/importer.js"] = 0;

function imports(arr){
	arr.forEach(function(item) {
	  if (registrImport[item] == undefined){
         registrImport[item] = 0;
         loadJs(item);
      } else {
      	 console.info(item + "	загружен ранее.");
      }
    });
}

function loadJs(url){
	var script = document.createElement('script');
  	script.src = url;
   
    script.onerror = function() { 
    	console.warn("Ошибка при загрузке	"+url);
    };

    script.onload = function() { 
    	console.info(url+"	успешно загружен");
    };	
  	document.head.appendChild(script);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы