Yipin Sky Web Development Code Station ASP und andere klassische Blogs zur Codesammlung im Zusammenhang mit der Webentwicklung - ASP-Kommunikation QQ-Gruppe 12814238 (vollständig) 14725152 (offen) Startseite ASPJS/AJAX-Rekonstruktion und -Optimierung, umfassende Sammlung von Codedatenbanken und gemeinsame Nutzung des Betriebssystems für audiovisuelle Unterhaltung Vorheriger Artikel |. Nächster Ein Artikel JS/AJAX
So übergeben Sie Parameter an JavaScript-Dateien in JavaScript Autor: Yipin Datum: 23.03.2009
Schriftgröße: klein, mittel,
groß
Dies ist die einfachste Möglichkeit, globale Variablen wie Google Adsense zu verwenden:
Programmcode
<script type="text/javascript">
google_ad_client = 'pub-3741595817388494';
</script>
<script type="text/javascript" src=" http://pagead2 .
googlesyndication.com/pagead/show_ads.js"></script>
Der Nachteil besteht darin, dass globale Variablen eingeführt werden. Es gibt zwei Varianten, wie Dateien eingeführt werden:
Programmcode
// Variante 1: Zur Ausgabe document.write verwenden
<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>
Programmcode
// Variante 2: Verwenden Sie die DOM-Operation zum Anhängen an den Kopf
<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: Der obige Code ist ein virtueller Demonstrationscode, der auf einer tatsächlichen Anwendung basiert
. Hinweis: Variante 1 wird in vielen Anwendungen verwendet.
Programmcode
<script type="text/javascript">
// Einfach direkt entkommen:
document.write('<script type="text/javascript" src="test.js"></script>');
// Oder liken Sie die Yahoo-Homepage:
document.write('<scr' + 'ipt type="text/javascript" src="test.js"></scr' + 'ipt>');
</script>
2.
Im Vergleich zum Abrufen und Parsen des src des Skriptelements und aller Variablen bevorzugen wir die Übergabe von Parametern wie folgt:
Programmcode
<script type="text/javascript" src="test.js?a=b&c=d"></script>
Das Kernproblem besteht darin, wie man das src-Attribut erhält.
Methode eins besteht darin, dem Skript das ID-Attribut 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.
Die zweite Methode 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 durch reguläre Regeln 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 besteht darin, einfach benutzerdefinierte Attributdaten basierend auf Methode eins hinzuzufügen:
Programmcode
<script id="testScript" type="text/javascript" src="test.js" data="a=b&c=d"></script>
In der Datei test.js werden die übergebenen Parameter über die folgende Zeile abgerufen:
Programmcode
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, muss jedoch bei der Ausführung in der Reihenfolge im Dokumentfluss ausgeführt werden). Wenn eine js-Datei ausgeführt wird, muss sie die letzte unter den „geladenen“ js-Dateien sein:
Programmcode
var scripts = document.getElementsByTagName('script');
var currentScript = scripts[scripts.length - 1];
Methode vier ist geschickter und genialer als Methode zwei.
In Bezug auf Codevereinfachung und Leistung: Methode 3>Methode 1>Methode 4>Methode 2
Zusammenfassung: Wenn Ihnen Standards am Herzen liegen, empfehle ich Methode 4; wenn Sie wie ich der Meinung sind, dass es nicht notwendig ist, die Standards vollständig einzuhalten, Methode 3 wird empfohlen.
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 auch die folgenden „bösen Wege“ genutzt werden:
Programmcode
<script type="text/javascript" src="test.js">
TB.SomeApp.scriptArgs = 'a=b&c=d';
</script>
In der test.js-Datei:
Programmcode
TB = {}; TB.SomeApp = {};
var scripts = document.getElementsByTagName("script");
eval(scripts[scripts.length - 1].innerHTML);
Dadurch werden die Parameter in der Variablen TB.SomeApp.scriptArgs gespeichert.
Wenn nicht viele Parameter vorhanden sind, können Sie sogar Folgendes tun:
Programmcode
<script type="text/javascript" src="test.js">a=b&c=d</script>
js-Datei:
Programmcode
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:
Programmcode
<script type="text/javascript" src="test.js" xxxxx="TB.SomeFun('a=b&c=d')"></script>
Definieren Sie einfach die Funktion in der js-Datei:
Programmcode
TB = {};
TB.SomeFun = function(arg) { //code };
Der obige Code kann unter Nicht-IE-Browsern korrekt ausgeführt werden. Für ein dummes Beispiel müssen Sie ein paar Codezeilen hinzufügen:
Programmcode
if(window.ActiveXObject) {
var scripts = document.getElementsByTagName('script');
eval(scripts[scripts.length - 1].getAttribute('onload'));
}
Solange wir den Geist der Ausgrabung weiterführen, glaube ich, dass es noch mehr inspirierende Lösungen geben wird –
welche Lösung ist nach der Zusammenfassung der oben genannten Lösungen die beste? Meine Antwort lautet: Es gibt nicht das Beste, sondern nur das Passendste! Denn für unterschiedliche Anwendungen und unterschiedliche Konzepte ist die Definition von „gut“ unterschiedlich.
Meine derzeitige Philosophie ist beispielsweise, dass es nicht notwendig ist, die Standards vollständig einzuhalten. Was globale Variablen betrifft, müssen wir Missbrauch und nicht Verwendung vermeiden. Daher werde ich die globale Variablenlösung wählen, die am einfachsten ist und die beste Leistung bietet.