Maison interface Web js tutoriel javascript开发随笔二 动态加载js和文件_javascript技巧

javascript开发随笔二 动态加载js和文件_javascript技巧

May 16, 2016 pm 05:59 PM
动态加载

这时候最好的做法就是按需引入,动态引入组件js和样式,文件load完成后调用callback,运行js。代码还是很简便的
1. 判断文件load完成。加载状态ie为onreadystatechange,其他为onload、onerror

复制代码 代码如下:

if(isie){
Res.onreadystatechange = function(){
if(Res.readyState == 'complete' || Res.readyState == 'loaded'){
Res.onreadystatechange = null;
callback();
_self.loadedUi[modelName] = true;
}
}
}else{
Res.onload = function(){
Res.onload = null;
callback();
_self.loadedUi[modelName] = true;
}
Res.onerror = function(){
throw new Error('res error:' + modelName+'.js');
}
}

2. 所有组件的命名最好保持一致,callback调用也比较方便。还可以根据需要增加参数比如: requires,依赖于那些文件;style,true || false,是否加载样式,等等。
3. 移除操作也可以有,移除script、style标签、delete组件
复制代码 代码如下:

(function(window,undefined){
if(!window.ui) {
window.ui = {};
}
//动态加载ui的js
window.bus = {
config : {
version : window.config.version,
cssPath : window.config.resServer + '/css/v3/ui',
jsPath : window.config.resServer + '/js/v2/ui'
},
loadedUi : {},
readyStateChange : function(){
var ua = navigator.userAgent.toLowerCase();
return ua.indexOf('msie') >= 0;
},
loadRes : function(modelName,prames,callback){
var _self = this;
var Res = document.createElement(prames.tagName);
for(var k in prames){
if(k != 'tagName'){
Res.setAttribute(k,prames[k],0);
}
}
document.getElementsByTagName('head')[0].appendChild(Res);
if(this.readyStateChange()){
Res.onreadystatechange = function(){
if(Res.readyState == 'complete' || Res.readyState == 'loaded'){
Res.onreadystatechange = null;
callback();
_self.loadedUi[modelName] = true;
}
}
}else{
Res.onload = function(){
Res.onload = null;
callback();
_self.loadedUi[modelName] = true;
}
Res.onerror = function(){
throw new Error('res error:' + modelName+'.js');
}
}
},
removeUi : function(modelName){
if(!modelName){
return true
};
this.loadedUi[modelName] = false;
var head = document.getElementsByTagName('head')[0];
var model_js = document.getElementById('J_model_'+modelName + '_js');
var model_css = document.getElementById('J_model_'+modelName + '_css');
if(model_js && model_css){
delete window.ui[modelName];
head.removeChild(model_js);
head.removeChild(model_css);
return true;
}else{
return false;
}
},
loadUi : function(modelName,callback,setting){
if(!modelName){
return true
};
callback = callback || function(){};
if(this.loadedUi[modelName] == true){
callback();
return true
}
var deafult_setting = {
style : true,
js : true,
requires : []
}
for(var key in setting){
deafult_setting[key] = setting[key];
}
deafult_setting['style'] === true && this.loadRes(modelName,{
id : 'J_model_'+modelName + '_css',
name : modelName,
tagName : 'link',
type : 'text/css',
rel : 'stylesheet',
href : this.config.cssPath + '/' + modelName + '.css?v=' + this.config.version
});
deafult_setting['js'] === true && this.loadRes(modelName,{
id : 'J_model_'+modelName + '_js',
name : modelName,
tagName : 'script',
type : 'text/javascript',
src : this.config.jsPath + '/' + modelName + '.js?v=' + this.config.version
},callback);
if(deafult_setting.requires.length > 0){
for(var i=0,len = deafult_setting.requires.length;ithis.loadUi(deafult_setting.requires[i]);
}
}
}
}
})(window)

使用方法
复制代码 代码如下:

// load comment for feed
window.bus.loadUi('new_comment_feed', function(){
window.ui.new_comment_feed($("#J_newsList"));
},{
style : false,
requires:['emoticon','addFriend']
});
// load new yy ui
window.bus.loadUi('yy', function(){
window.ui.yy(options);
},{
style:false,
requires:['emoticon']
});
// load photoLightbox
window.bus.loadUi('photoLightbox', function(){
window.ui.photoLightbox(options.urlAjaxGetFriendPhoto, options.urlCommentOtherPhoto,$("#J_newsList"),options.myUid,options.myName);
});
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Python implémente le chargement dynamique des pages et l'analyse des fonctions de traitement des requêtes asynchrones pour les applications de collecte de navigateurs sans tête Python implémente le chargement dynamique des pages et l'analyse des fonctions de traitement des requêtes asynchrones pour les applications de collecte de navigateurs sans tête Aug 08, 2023 am 10:16 AM

Python implémente les fonctions de chargement dynamique et de traitement des requêtes asynchrones des applications de collecte de navigateurs sans tête. Dans les robots d'exploration Web, il est parfois nécessaire de collecter le contenu de la page qui utilise le chargement dynamique ou les requêtes asynchrones. Les outils de robots d'exploration traditionnels présentent certaines limitations dans le traitement de ces pages et ne peuvent pas obtenir avec précision le contenu généré par JavaScript sur la page. L'utilisation d'un navigateur sans tête peut résoudre ce problème. Cet article explique comment utiliser Python pour implémenter un navigateur sans tête afin de collecter le contenu des pages à l'aide du chargement dynamique et des requêtes asynchrones.

Comment gérer le chargement et la commutation dynamiques des composants dans Vue Comment gérer le chargement et la commutation dynamiques des composants dans Vue Oct 15, 2023 pm 04:34 PM

Gestion du chargement et du changement dynamiques de composants dans Vue Vue est un framework JavaScript populaire qui fournit une variété de fonctions flexibles pour gérer le chargement et le changement dynamiques de composants. Dans cet article, nous discuterons de certaines méthodes de gestion du chargement et de la commutation dynamiques des composants dans Vue et fournirons des exemples de code spécifiques. Le chargement dynamique de composants signifie le chargement dynamique de composants au moment de l'exécution, selon les besoins. Cela améliore les performances et la vitesse de chargement de votre application car les composants pertinents ne sont chargés qu'en cas de besoin. Vue fournit async et awa

Révéler le principe de la mise à jour à chaud dans Golang : explication privilégiée du chargement et du rechargement dynamiques Révéler le principe de la mise à jour à chaud dans Golang : explication privilégiée du chargement et du rechargement dynamiques Jan 20, 2024 am 10:09 AM

Explorer le principe de Golang Hot Update : Le mystère du chargement et du rechargement dynamiques Introduction : Dans le domaine du développement logiciel, les programmeurs espèrent souvent pouvoir modifier et mettre à jour le code sans redémarrer l'application. De telles exigences sont d’une grande importance tant pour l’efficacité du développement que pour la fiabilité du fonctionnement du système. En tant que langage de programmation moderne, Golang fournit aux développeurs de nombreux mécanismes pratiques pour implémenter des mises à jour à chaud. Cet article approfondira les principes de la mise à jour à chaud de Golang, en particulier les mystères du chargement et du rechargement dynamiques, et le combinera avec des exemples de code spécifiques.

Comment créer une table qui charge dynamiquement des données à l'aide de Vue et Element-UI Comment créer une table qui charge dynamiquement des données à l'aide de Vue et Element-UI Jul 21, 2023 pm 11:49 PM

Comment utiliser Vue et Element-UI pour créer une table qui charge dynamiquement des données dans le développement Web moderne, les tables de données sont l'un des composants d'interface courants. Vue.js est un framework frontal très populaire de nos jours, et Element-UI est un ensemble de bibliothèques de composants développées sur la base de Vue.js, qui fournit un riche ensemble de composants d'interface utilisateur que nous pouvons utiliser. Cet article expliquera comment utiliser Vue et Element-UI pour créer une table capable de charger dynamiquement des données et donnera des exemples de code correspondants. Tout d'abord, nous devons installer

Résoudre l'erreur Vue : impossible d'utiliser correctement Vue Router pour charger dynamiquement des composants en fonction des paramètres de routage Résoudre l'erreur Vue : impossible d'utiliser correctement Vue Router pour charger dynamiquement des composants en fonction des paramètres de routage Aug 20, 2023 am 08:09 AM

Résoudre l'erreur Vue : impossible d'utiliser correctement VueRouter pour charger dynamiquement des composants en fonction des paramètres de routage. Lors du processus d'utilisation de VueRouter pour les sauts de routage, nous devons parfois charger dynamiquement des composants en fonction des paramètres de routage. Cependant, dans certains cas, nous pouvons rencontrer une erreur courante : impossible d'utiliser correctement VueRouter pour charger dynamiquement des composants en fonction des paramètres de routage. Cet article décrit comment résoudre cette erreur et fournit des exemples de code. Tout d’abord, nous devons être clairs : VueRouter peut passer

Comment utiliser la réflexion et charger dynamiquement des assemblys en C# Comment utiliser la réflexion et charger dynamiquement des assemblys en C# Oct 08, 2023 pm 12:12 PM

Comment utiliser la réflexion et charger dynamiquement des assemblys en C# Introduction : En C#, la réflexion (Reflection) est un mécanisme puissant qui nous permet d'obtenir et d'exploiter les métadonnées du programme au moment de l'exécution, y compris les informations de type, les informations sur les membres, etc. Le chargement dynamique d'assemblys est une application courante implémentée par réflexion et s'avère très utile dans certains scénarios spécifiques. Cet article présentera en détail comment utiliser la réflexion et charger dynamiquement des assemblys en C#, et fournira des exemples de code spécifiques. Le concept de base de la réflexion La réflexion est une fonction importante du langage C#

Conseils pratiques de phpSpider : Comment gérer le chargement dynamique du contenu web ? Conseils pratiques de phpSpider : Comment gérer le chargement dynamique du contenu web ? Jul 22, 2023 am 08:33 AM

Conseils pratiques de phpSpider : Comment gérer le chargement dynamique du contenu web ? Lors de l'exploration des données d'une page Web, nous rencontrons souvent le problème selon lequel le contenu chargé dynamiquement ne peut pas être obtenu directement via le robot d'exploration. Ces contenus chargés dynamiquement peuvent être des données obtenues via des requêtes AJAX, des éléments DOM rendus via JavaScript, etc. Afin de résoudre ce problème, cet article présentera quelques conseils pratiques pour gérer les problèmes de chargement dynamique des pages Web lors de l'utilisation de phpSpider. 1. Utilisez les outils de débogage réseau pour rechercher des URL chargées dynamiquement

Utilisez la méthode load() de la classe System en Java pour charger dynamiquement des classes ou des ressources Utilisez la méthode load() de la classe System en Java pour charger dynamiquement des classes ou des ressources Jul 25, 2023 am 10:25 AM

Java utilise la méthode load() de la classe System pour charger dynamiquement des classes ou des ressources. Dans le développement Java, nous devons parfois charger dynamiquement des classes ou des ressources pendant l'exécution du programme pour obtenir certaines fonctions flexibles. Java fournit la méthode load() de la classe System pour répondre à cette exigence. Cet article présentera l'utilisation de la méthode load() de la classe System et fournira des exemples de code correspondants. Tout d’abord, comprenons la définition de la méthode load() : publicstaticvo

See all articles