1. Utiliser les variables globales
C'est le moyen le plus simple, comme Google Adsense:
La copie de code est la suivante:
<script type = "text / javascript"> google_ad_client = 'pub-3741595817388494'; </ script> <script type = "text / javascript" src = "http: // pagead2. googlesynddication.com/pagead/show_ads.js"> </ script>
L'inconvénient est que les variables globales sont introduites. Il existe deux autres variantes de la manière d'introduire des fichiers:
// Variation 1: Utilisez Document.Write to Output <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> // variation 2: utilisez Dom pour s'appliquer à la tête <script type = "text / javascript"> g_beacon_atp = 'catégorie = & userId = & channel = 112ad_id ='; document.getElementsByTagName ('Head') [0] .APPEndChild (document. CreateElement ('Script')) .src = 'http: //taobao.com/atp.js'; </cript> // Remarque: Le code ci-dessus est un code de démonstration virtuel basé sur l'application réelleRemarque: la variété 1 est utilisée plusieurs fois et les méthodes d'écriture courantes sont les suivantes:
<script type = "text / javascript"> // échapper directement: document.write ('<script type = "text / javascript" src = "test.js"> </ script>'); // ou comme Yahoo! HomePage: document.write ('<scr' + 'ipt type = "text / javascript" src = "test.js"> </ scr' + 'ipt>'); </ script>2. Obtenez et analysez le SRC de l'élément de script
Par rapport à toutes les variables, nous préférons passer des paramètres comme les suivants:
<script type = "text / javascript" src = "test.js? a = b & c = d"> </ script>
Le problème de base est de savoir comment obtenir l'attribut SRC.
La première méthode consiste à ajouter un attribut ID au script, à obtenir le script actuel via ID, puis à utiliser régulièrement pour supprimer les paramètres de SRC. L'inconvénient est que dans la spécification HTML 4.01, l'élément de script n'a pas d'attribut ID. Cette lacune ne peut pas être considérée comme une lacune, après tout, il est préférable de ne pas avoir de normes que de croire aux normes.
La deuxième méthode consiste à utiliser le nom de fichier JS comme crochet. Après avoir réussi Document.getElementsByTagName ('Script') Dans le code JS, le fichier JS actuel sera égalé régulièrement. Cette méthode est orthodoxe, mais nécessite un nom de fichier unique. L'inconvénient est qu'il y a beaucoup de code et n'est pas affiné, ce qui aura un léger impact sur les performances.
La méthode 3 consiste à ajouter des données d'attribut personnalisées basées sur la méthode 1:
<script id = "testscript" type = "text / javascript" src = "test.js" data = "a = b & c = d"> </ script>
Dans le fichier test.js, utilisez la ligne suivante pour obtenir les paramètres passés:
var scriptargs = document.getElementById ('testscript'). getAttribute ('data'); La méthode 4 consiste à utiliser le mécanisme d'exécution séquentiel de JS (le chargement des fichiers JS peut être synchrone ou asynchrone, mais lors de l'exécution, il doit être exécuté dans l'ordre dans le flux de documents). Lorsqu'un certain fichier JS est exécuté, il doit être le dernier du fichier JS "chargé":
var scripts = document.getElementsByTagName ('script'); var CurrentScript = scripts [scripts.length - 1]; La méthode 4 est plus intelligente et génie que la méthode 2.
Du point de vue de la simplification et des performances du code, Méthode 3> Méthode 1> Méthode 4> Méthode 2
Résumé: Si vous vous souciez beaucoup des normes, recommandez la méthode 4; Si vous pensez qu'il n'est pas nécessaire de se conformer pleinement aux normes comme moi, recommandez la méthode 3.
Écrire un programme de test
<! Doctype html> <html> <script src = "a2.js"> </ script> <script src = "a2.js"> </ script> <script src = "a2.js"> </ script> <script src = "a2.js"> </cript> </html>
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 les fidèles fans de John Resig comme moi, vous vous souvenez peut-être encore des "tags de script dégradants" qui ont été discutés en août dernier. John Resig ouvre une porte imaginaire pour nous. Pour les questions de cet article, nous pouvons également utiliser les «chemins maléfiques» suivants pour y parvenir:
<script type = "text / javascript" src = "test.js"> tb.someapp.scriptargs = 'a = b & c = d'; </cript>
Dans le fichier test.js:
Tb = {}; Tb.someapp = {}; var scripts = document.getElementsByTagName ("script"); eval (scripts [scripts.length - 1] .InnerHtml);Cela stocke les paramètres de la variable TB.SomeApp.Scriptargs.
Lorsqu'il n'y a pas beaucoup de paramètres, vous pouvez même le faire:
<script type = "text / javascript" src = "test.js"> a = b & c = d </ script>
Dans le fichier JS:
var scripts = document.getElementsByTagName ("script"); var scriptargs = scripts [scripts.length - 1] .innerhtml.replace (/ [s] / g, '');L'imagination est infinie, vous pouvez également utiliser Onload:
<script type = "text / javascript" src = "test.js" onload = "tb.somefun ('a = b & c = d')"> </ script>
Définissez simplement la fonction dans le fichier JS:
Tb = {}; Tb.somefun = fonction (arg) {// code};Le code ci-dessus peut s'exécuter correctement dans les navigateurs non IE. Pour le stupide IE, vous devez ajouter quelques lignes de code:
if (window.activexObject) {var scripts = document.getElementsByTagName ('script'); eval (scripts [scripts.length - 1] .getAttribute ('onload'));}