Maison > interface Web > js tutoriel > le corps du texte

Passer des paramètres aux fichiers js (explication détaillée)_compétences javascript

WBOY
Libérer: 2016-05-16 16:42:07
original
1540 Les gens l'ont consulté

1. Utiliser des variables globales

C'est le moyen le plus simple, comme Google Adsense :

Copier le code Le code est le suivant :


L'inconvénient est que des variables globales sont introduites. Il existe deux variantes pour introduire les fichiers :

// 变体1:用document.write输出
 <script type="text/javascript"> google_ga_id ='g6u7un8646xx'; 
document.write(unescape('%3Cscript type="text/javascript" src= "http://www.google-analytics.com/ga.js"%3E%3C/script%3E')); </script> 
// 变体2:用DOM操作append到head里 
<script type="text/javascript"> 
G_BEACON_ATP ='category=&userid=&channel=112ad_id=';
 document.getElementsByTagName('head')[0].appendChild(document. createElement('script')).src='http://taobao.com/atp.js'; 
</script> // 注意:上面的代码是根据实际应用虚拟的示范代码

Copier après la connexion

Remarque : la variante 1 a de nombreuses applications. Les méthodes d'écriture courantes sont les suivantes :

<script type="text/javascript"> 
// 直接转义即可: 
document.write('<script type="text/javascript" src="test.js"></script>'); 
// 或者像Yahoo!首页一样: 
document.write('<scr'+'ipt type="text/javascript" src="test.js"></scr'+'ipt>');
</script>

Copier après la connexion

2. Obtenez et analysez le src de l'élément de script

Par rapport à toutes les variables, nous préférons transmettre des paramètres comme les suivants :

Le problème principal est de savoir comment obtenir l'attribut src.

La première méthode consiste à ajouter l'attribut id au script, à obtenir le script actuel via l'identifiant, puis à utiliser des expressions régulières pour extraire les paramètres de src. L'inconvénient est que dans la spécification HTML 4.01, l'élément SCRIPT n'a pas d'attribut id. Cette lacune n’en est pas une. Après tout, il vaut mieux croire aux normes que ne pas en avoir.

La méthode 2 consiste à utiliser le nom du fichier js comme hook. Après avoir passé document.getElementsByTagName('script') dans le code js, le fichier js actuel sera mis en correspondance par l'expression régulière. Cette méthode est très orthodoxe, mais nécessite un nom de fichier unique. L'inconvénient est qu'il y a beaucoup de code, qu'il n'est pas raffiné et qu'il a un léger impact sur les performances.

La troisième méthode est basée sur la première méthode, ajoutez simplement des données d'attribut personnalisées :

Dans le fichier test.js, récupérez les paramètres entrants via la ligne suivante :

var scriptArgs = document.getElementById('testScript').getAttribute('data'); La quatrième méthode consiste à utiliser le mécanisme d'exécution séquentielle de js (le fichier js peut être chargé de manière synchrone ou asynchrone, mais une fois exécuté, il doit être conforme à l'exécution séquentielle dans le flux de documents). Lorsqu'un fichier js est exécuté, il doit être le dernier parmi les fichiers js "chargés" :

var scripts = document.getElementsByTagName('script'); var currentScript = scripts[scripts.length - 1]; La méthode 4 est plus intelligente et géniale que la méthode 2.

En termes de simplification et de performances du code, méthode trois > méthode un > méthode quatre >

Résumé : Si vous vous souciez des normes, nous recommandons la quatrième méthode ; si, comme moi, vous ne ressentez pas le besoin de vous conformer pleinement aux normes, nous recommandons la troisième méthode.

Écrire un programme de test

<!DOCTYPE html>
<html>
<script src="a2.js">
</script>
<script src="a2.js">
</script>
<script src="a2.js">
</script>
</html>

Copier après la connexion
a2.js

var scripts = document.getElementsByTagName('script'); var currentScript = scripts.length;alert(currentScript);

Imprimer séparément

1 2 3

3. Plan d'inspiration

Si vous êtes un fan fidèle de John Resig comme moi, vous vous souvenez peut-être encore des "Degrading Script Tags" qui ont été très discutés en août de l'année dernière. John Resig nous a ouvert une porte d'imagination Pour le problème de cet article, nous pouvons également utiliser les « mauvaises voies » suivantes pour le résoudre :

Dans le fichier test.js :

TB = {}; TB.SomeApp = {}; 
var scripts = document.getElementsByTagName("script");
eval(scripts[ scripts.length - 1 ].innerHTML);

Copier après la connexion
De cette manière, les paramètres sont stockés dans la variable TB.SomeApp.scriptArgs.

Quand il n'y a pas beaucoup de paramètres, vous pouvez même faire ceci :

Dans le fichier js :

var scripts = document.getElementsByTagName("script"); 
var scriptArgs = scripts[ scripts.length - 1 ].innerHTML.replace(/[s]/g, '');

Copier après la connexion
L'imagination est infinie, vous pouvez également utiliser onload :

Définissez simplement la fonction dans le fichier js :

TB = {}; 
TB.SomeFun = function(arg) { 
//code
};

Copier après la connexion
Le code ci-dessus peut s'exécuter correctement dans les navigateurs non IE. Pour un IE stupide, vous devez ajouter quelques lignes de code :

if(window.ActiveXObject) { 
var scripts = document.getElementsByTagName('script'); 
eval(scripts[scripts.length - 1].getAttribute('onload'));
}
Copier après la connexion
Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!