ホームページ  >  記事  >  バックエンド開発  >  RegisterClientScriptBlock と RegisterStartupScript の違い

RegisterClientScriptBlock と RegisterStartupScript の違い

巴扎黑
巴扎黑オリジナル
2016-12-19 16:40:221624ブラウズ

RegisterClientScriptBlock と RegisterStartupScript は両方ともスクリプト ブロックを登録します。

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

両者の違いは、RegisterClientScriptBlock が本文の先頭に登録されるのに対し、RegisterStartupScript は本文の最後に登録されることです。

なぜですか?パフォーマンスの最適化に関する記事の中には、スクリプトを最後にロードする必要があると記載されているものもありますが、アプリケーションによっては、最初にスクリプトをロードする必要があります。この場合は、ClientScript.RegisterStartupScript を使用する必要があります。

2 番目のパラメータ キーについて話しましょう。

2 番目のパラメーターのキーは、重複した登録を避けるために使用されます。上記のコードでは、キーはすべて script1 ですが、メソッド名が異なるため競合は発生しません。

以下のコードはすべて RegisterStartupScript です。script1 スクリプトがすでに登録されているため、2 番目の文には出力がありません。

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

Response.Write は JavaScript を出力できますが、出力内容は になります。以前は、これによりスタイルシートの失敗や、一部の脆弱なブラウザでエラーが発生するなどの問題が発生していました。

ClientScript は JavaScript を簡単に管理できます。ClientScript.RegisterClientScriptBlock と ClientScript.RegisterStartupScript の違いは 1 つだけです。つまり、RegisterClientScriptBlock は

の後にスクリプト コードを記述しますが、RegisterStartupScript は < の後にコードを記述します。 ;/form> (終了タグに注意してください) の前に。

public void RegisterClientScriptBlock(型タイプ、文字列キー、文字列スクリプト)
public void RegisterClientScriptBlock(型タイプ、文字列キー、文字列スクリプト、bool addScriptTags)
public void RegisterStartupScript(型タイプ、文字列キー、文字列スクリプト)
public void RegisterStartupScript (Type type、string key、string script、bool addScriptTags)

両者の構文は同じであることがわかります。

type 登録する起動スクリプトのタイプ。

key 登録する起動スクリプトのキー。このスクリプトに付ける名前です。同じキーを持つスクリプトは重複とみなされます。このようなスクリプトでは、ClientScriptBlock と StartupScript 内の同じキーは重複とみなされません。

script スクリプト コード。

addScriptTags