Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied zwischen RegisterClientScriptBlock und RegisterStartupScript

Der Unterschied zwischen RegisterClientScriptBlock und RegisterStartupScript

巴扎黑
巴扎黑Original
2016-12-19 16:40:221562Durchsuche

RegisterClientScriptBlock und RegisterStartupScript registrieren beide einen Skriptblock.

ClientScript.RegisterClientScriptBlock(this.GetType(), "script1", "alert(1);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert (2);", true);

Der Unterschied zwischen ihnen besteht darin, dass RegisterClientScriptBlock am Anfang des Körpers registriert wird, während RegisterStartupScript am Ende des Körpers registriert wird.

Warum ist das so? In einigen Artikeln zur Leistungsoptimierung wird empfohlen, das Skript zuletzt in den Hauptteil zu laden. Abhängig von der tatsächlichen Situation einiger Anwendungen muss das Skript jedoch zunächst geladen werden. In diesem Fall muss ClientScript.RegisterStartupScript verwendet werden.

Lassen Sie uns über ihren zweiten Parameterschlüssel sprechen.

Der zweite Parameterschlüssel wird verwendet, um eine wiederholte Registrierung zu vermeiden. Im obigen Code lauten ihre Schlüssel alle script1, es entsteht jedoch kein Konflikt, da die Methodennamen unterschiedlich sind.

Die folgenden Codes sind alle RegisterStartupScript. Der zweite Satz hat keine Ausgabe, da zuvor ein script1-Skript registriert wurde.

ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert(2);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert (3);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script2", "alert(4);", true);

Obwohl , Response.Write kann JavaScript ausgeben, der Ausgabeinhalt liegt jedoch vor , was zu einigen Problemen führen kann, z. B. zu Stylesheet-Fehlern, und in einigen fragilen Browsern sogar zu Fehlern.

ClientScript kann JavaScript problemlos verwalten. Es sollte gesagt werden, dass es nur einen Unterschied zwischen ClientScript.RegisterClientScriptBlock und ClientScript.RegisterStartupScript gibt, nämlich, dass RegisterClientScriptBlock den Skriptcode nach

schreibt. , während RegisterStartupScript den Code vor
schreibt (beachten Sie das schließende Tag).

public void RegisterClientScriptBlock(Type type, string key, string script)
public void RegisterClientScriptBlock(Type type, string key, string script, bool addScriptTags)
public void RegisterStartupScript(Type type, string key , string script)
public void RegisterStartupScript(Type type, string key, string script, bool addScriptTags)

Es ist ersichtlich, dass die Syntax der beiden gleich ist.

Typ Der Typ des zu registrierenden Startskripts.

key Der Schlüssel des zu registrierenden Startskripts. Dies ist der Name, den Sie diesem Skript geben. Skripte mit demselben Schlüssel werden als Duplikate betrachtet. Bei solchen Skripten wird nur das erste registrierte Skript ausgegeben. Die gleichen Schlüssel in ClientScriptBlock und StartupScript gelten nicht als Duplikate.

Skript-Skriptcode.

addScriptTags Gibt an, ob das Tag