0

私はいくつかの JavaScript/jQuery プラグインを使用しているサイトを持っています。次にdefault.js、異なるページごとにプラグイン機能を使用するファイルを持っています。

たとえば、私が持っているプラ​​グインには次のものがあります。

  • カスタムスクロールバープラグイン
  • スライドショープラグイン
  • クッキープラグイン

次に、default.jsファイルで次のようにします (疑似コード)。

var scrolling = findScrollbarDiv;
scrolling.ScrollFunction({ options });

(そして、スライドショー+私が持っている他のプラグインについても同じです)

ただし、null を返す plage がある場合findScrollbarDiv、次のようなエラーが発生します。

ScrollFunction は関数ではありません

これは、要素が null を返すためではなく、このページのプラグイン ファイルを含めていないためです。これの背後にある私の理由は、不要な HTTP リクエストが発生する可能性があるため (特に、1 つのプラグインしか必要としないホームページ上で)、すべてのファイルをすべてのページに含めたくない (必要でなくても) ことです。

このエラーは、残りの JavaScript を台無しにします。

これを克服する最善の方法は何ですか?必要かどうかに関係なく、すべてのページにすべてのプラグイン ファイルを含める必要がありますか? または、次のような JavaScript を使用できますか。

var scrolling = findScrollbarDiv;
if(scrolling != null) {
    scrolling.ScrollFunction({ options });
}

(これは私には少しぎこちなく感じますが、これが最善の解決策である場合はお知らせください)

または、1 つのデフォルト js ファイルを使用してすべてのプラグインを起動するのは悪い考えですか?

4

2 に答える 2

1

同じヘッダー ファイルを使用していて、ファイルを含めてもかまわない場合は、イベントをアタッチする前に要素が存在するかどうかをいつでも確認できます。

例を次に示します。

if(jQuery('#someElement').length > 0){
    jQuery('#someElement').ScrollFunction({ options });
}

それか、関数ごとに JavaScript ファイルを用意します。

したがって、ギャラリー用に 1 つ、Cookie 用に 1 つなどがあります。各ページに必要なものだけを含めます。

于 2012-12-18T11:09:15.440 に答える
1

条件付きステートメントとしてそれを行うだけで、不格好な場合を回避できます。

scrolling && scrolling.ScrollFunction({ options });

これは、呼び出す前に親オブジェクトが存在するかどうかを確認したいメソッドに最適です。さらに (必要な場合)、実行前にメソッド自体が存在するかどうかを確認できます。

scrolling && scrolling.ScrollFunction && scrolling.ScrollFunction({ options });

スクロールがコレクションの場合は、その長さを確認してください (長さ == 0 の場合、ステートメントは失敗します):

scrolling.length && scrolling.ScrollFunction({ options });
于 2012-12-18T11:17:34.123 に答える