Heim  >  Artikel  >  Web-Frontend  >  Übergabe von Parametern an JS-Dateien (ausführliche Erklärung)_Javascript-Kenntnisse

Übergabe von Parametern an JS-Dateien (ausführliche Erklärung)_Javascript-Kenntnisse

WBOY
WBOYOriginal
2016-05-16 16:42:071535Durchsuche

1. Globale Variablen verwenden

Dies ist der einfachste Weg, wie zum Beispiel Google Adsense:

Code kopieren Der Code lautet wie folgt:

4ec11beb6c39d0703d1751d203c17053 google_ad_client ='pub-3741595817388494'; 2cacc6d41bbb37262a98f745aa00fbf0 5e1556762f2eef451ee410bac649b6492cacc6d41bbb37262a98f745aa00fbf0

Der Nachteil besteht darin, dass globale Variablen eingeführt werden. Es gibt zwei Varianten, wie Dateien eingeführt werden:

// 变体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> // 注意:上面的代码是根据实际应用虚拟的示范代码

Hinweis: Variante 1 hat viele Anwendungsmöglichkeiten:

<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>

2. Erhalten und analysieren Sie den Quellcode des Skriptelements

Im Vergleich zu allen Variablen bevorzugen wir die Übergabe von Parametern wie den folgenden:

13ae44ffe4aa4df7af013a12fb8158d82cacc6d41bbb37262a98f745aa00fbf0

Das Kernproblem besteht darin, wie man das src-Attribut erhält.

Methode eins besteht darin, das ID-Attribut zum Skript hinzuzufügen, das aktuelle Skript über die ID abzurufen und dann reguläre Ausdrücke zu verwenden, um die Parameter aus src zu extrahieren. Der Nachteil besteht darin, dass das SCRIPT-Element in der HTML 4.01-Spezifikation kein id-Attribut hat. Dieser Mangel ist kein Mangel. Schließlich ist es besser, an Standards zu glauben, als keine Standards zu haben.

Methode 2 besteht darin, den Namen der js-Datei als Hook zu verwenden. Nach der Übergabe von document.getElementsByTagName('script') im js-Code wird die aktuelle js-Datei mit dem regulären Ausdruck abgeglichen. Diese Methode ist sehr orthodox, erfordert jedoch einen eindeutigen Dateinamen. Der Nachteil besteht darin, dass es viel Code gibt, dieser nicht verfeinert ist und einen leichten Einfluss auf die Leistung hat.

Methode drei basiert auf Methode eins. Fügen Sie einfach benutzerdefinierte Attributdaten hinzu:

94c14f1ae29f3592bfda9eb585dbd14b2cacc6d41bbb37262a98f745aa00fbf0

Rufen Sie in der Datei test.js die eingehenden Parameter über die folgende Zeile ab:

var scriptArgs = document.getElementById('testScript').getAttribute('data'); Die vierte Methode besteht darin, den sequentiellen Ausführungsmechanismus von js zu verwenden (die js-Datei kann synchron oder asynchron geladen werden, aber wenn sie ausgeführt wird). müssen entsprechend sequentiell im Belegfluss ausgeführt werden). Wenn eine js-Datei ausgeführt wird, muss es die letzte unter den „geladenen“ js-Dateien sein:

var scripts = document.getElementsByTagName('script'); var currentScript = scripts[scripts.length - 1];Methode 4 ist cleverer und genialer als Methode 2.

In Bezug auf Codevereinfachung und Leistung ist Methode drei > Methode vier >

Zusammenfassung: Wenn Ihnen Standards am Herzen liegen, empfehlen wir Methode vier; wenn Sie, wie ich, nicht das Bedürfnis verspüren, Standards vollständig einzuhalten, empfehlen wir Methode drei.

Schreiben Sie ein Testprogramm

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

a2.js

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

Separat ausdrucken

1 2 3

3. Inspirationsplan

Wenn Sie wie ich ein treuer Fan von John Resig sind, erinnern Sie sich vielleicht noch an die „Degrading Script Tags“, die im August letzten Jahres viel diskutiert wurden. John Resig hat uns eine Tür der Fantasie geöffnet. Für das Problem dieses Artikels können wir auch die folgenden „bösen Wege“ nutzen, um es zu lösen:

ae47fa971796540d6040c77d18703721 TB.SomeApp.scriptArgs ='a=b&c=d';

In der test.js-Datei:

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

Auf diese Weise werden die Parameter in der Variablen TB.SomeApp.scriptArgs gespeichert.

Wenn nicht viele Parameter vorhanden sind, können Sie sogar Folgendes tun:

ae47fa971796540d6040c77d18703721a=b&c=d2cacc6d41bbb37262a98f745aa00fbf0

In js-Datei:

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

Der Fantasie sind keine Grenzen gesetzt, Sie können auch onload verwenden:

3959d0a17b69883088dd6228aa01b50a2cacc6d41bbb37262a98f745aa00fbf0

Definieren Sie einfach die Funktion in der js-Datei:

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

Der obige Code kann in Nicht-IE-Browsern korrekt ausgeführt werden. Für einen dummen IE müssen Sie ein paar Codezeilen hinzufügen:

if(window.ActiveXObject) { 
var scripts = document.getElementsByTagName('script'); 
eval(scripts[scripts.length - 1].getAttribute('onload'));
}
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn