1

マスター ページを使用していますが、すべてのページではなく一部のページで JQuery が参照されています。クライアント側の JQuery を使用するユーザー コントロールをいくつか追加しているため、それらを使用するページに jQuery ライブラリへの参照を含める必要があります。

これを達成するには明らかに多くの方法がありますが、次の手法の相対的な長所と短所についての考えを知りたいと思っていました (または、実際により良い手法が存在するかどうか)。

  1. (関連する属性を持つ HTMLgenericControl を作成することによって) スクリプト要素をヘッダー controlCollection に追加します - cons -> ページといくつかのユーザー コントロールがすべて jquery を使用する場合、同じファイルを指す複数のスクリプト要素がクライアントに提供される可能性があります。これは本当にデメリットでしょうか?ブラウザはいくつかのコピーをダウンロードしようとしますか?

  2. masterPage ブール値プロパティ jQueryLib を追加し、スクリプト要素がまだ追加されていない場合にのみ、上記のように追加します。短所 - マスターページの場合、ユーザー コントロールの場合とは異なり、ASP でプロパティを設定できません。したがって、すべてのページには、単純な <%@ Page jQueryLib="true"> ではなく、より多くのコード ビハインドが必要になります。

  3. jQuery==='undefined' の場合、かなり単純なクライアント側 JavaScript を使用して jQuery をロードし、ライブラリがロードされた後に関連するスクリプトを実行します。短所 - これを行うための JavaScript ユーティリティ関数を指すスクリプト タグは、1 つのページで多数のユーザー コントロールが使用されている場合でも、ヘッダーに複数回存在します。ただし、利点として、このファイルは jQuery ライブラリよりもはるかに小さいです。

  4. jquery 機能を必要とするのは管理者としてログインしているユーザーだけですが、マスター ページにスクリプト参照を配置するだけです。

いつものように、HTML と ASP に関するすべてのことに関する私の素人知識についてお詫び申し上げます。

4

1 に答える 1

1

次のようなものを使用して、管理者用の MasterPage に jQuery を追加することしかできません。

サーバー側:

protected bool administrator { get { return true; } }

Javascript :

function pageLoad(sender, args) {
    var administrator = "<%= administrator %>".toLowerCase() == "true" ? true : false;

    if(administrator == true)
        loadJQuery();
}

function loadJQuery(){
    var scriptTag = document.createElement("script");
    var filePath = "jquery.js";

    scriptTag.onload = function( loadEvent ){
        // This function runs when jquery is loaded
    }

    scriptTag.type = "text/javascript";
    scriptTag.src = filePath;
    document.getElementsByTagName("head")[0].appendChild(scriptTag);
}
于 2012-06-12T01:16:19.437 に答える