J'ai un fichier JavaScript principal, nous appellerons core.js
que d'autres fichiers dépendent.Déterminer si un fichier JavaScript dépendant a été inclus
En core.js je suis un objet qui la définition sera nécessaire pour exister dans les fichiers dépendants.
core.js:
(function(){
/* base package */
var core = window.core = function() {
// Throw an error, the core package cannot be instantiated.
throw new Error("A package cannot be instantiated");
};
})();
utils.js
/* utils package */
core.utils = function() {
// Throw an error, the core package cannot be instantiated.
throw("A package cannot be instantiated");
};
/**
* Utility: StringUtils
*/
core.utils.StringUtils = new Object();
core.utils.StringUtils.prototype = {
/**
* ltrim - Removes preceding whitespaces
*/
ltrim: function(value) {
var re = /\s*((\S+\s*)*)/;
return value.replace(re, "$1");
},
/**
* rtrim - Removes succeeding whitespaces
*/
rtrim: function(value) {
var re = /((\s*\S+)*)\s*/;
return value.replace(re, "$1");
},
/**
* trim - Removes preceding and succeeding whitespaces
*/
trim: function(value) {
return core.StringUtils.ltrim(core.StringUtils.rtrim(value));
}
};
Actuellement, je suis d'ajouter une étiquette d'identification à la balise <script />
<script id="core.js" src="core.js" type="text/javascript"></script>
et vérification c'est existen ce avant de définir de nouveaux éléments dans l'objet core
.
(function() {
if (typeof (core) == 'undefined') {
var script = document.getElementById("core.js");
if (script == null)
throw ("core.js is missing.");
else
throw ("Unknown Exception. core is undefined.");
}
})();
Suis-je concerné avec la compatibilité du navigateur croix? Il fonctionne actuellement dans IE9 et FF5, mais je veux m'assurer qu'il fonctionne pour tous les navigateurs.
Y at-il une alternative/meilleure façon de déterminer si un fichier a été inclus ou non?
variante A « pas cher » est de définir une variable sentinelle: 'var = core_is_loaded true' dans le « doit être inclus » fichier et la vérification de l'existence de cette var et ayant une valeur appropriée. –
Pas vraiment une réponse, mais pourquoi faire des fonctions core, core.utils etc. si vous ne voulez pas qu'elles soient instanciées? Objet simple ne fera pas? –
@Chetan Le motif de conception est basé sur le chapitre 3 de «JavaScript pratique, scripts DOM et projets Ajax» de Frank Zammetti. Pour une gestion correcte des erreurs, je voulais lancer une erreur qui permettait à quiconque utilisant le script de savoir ce qu'il avait mal fait, au lieu du générique "Objet ne supporte pas cette action". – Utilitron