0

2つのカスタムフィールドで構成されるセーフクラッカーフォームだけの空のテンプレートがあります。ブラウザにロードしようとすると、ロードに約2〜3秒かかります。ファイアバグを見ると、次のGETが表示されます

http://localhost/ee1/?ACT=7&ui=core,widget,mouse,position,draggable,resizable,button,dialog,datepicker&plugin=scrollable,scrollable.navigator,ee_filebrowser,ee_fileuploader,markitup,thickbox,toolbox.expose,overlay,tmpl&v=1308711156&use_live_url=y&include_jquery=y

上記のURLに表示されているもののほとんどをロードする必要はありません。セーフクラッカーフォームで読み込まれるものを制御するにはどうすればよいですか。jQuery / UIをGoogleから直接ロードするので、ロードするのにsafecrackerは必要ありません。を実行することで、セーフクラッカーフォームからjQueryとdatepickerを削除できますがdatepicker="no" include_jquery="no"、スクロール可能、ドラッグ可能、thickboxなど、URLに記載されている他のものを削除するのはどうでしょうか。

ここに画像の説明を入力してください

4

2 に答える 2

2

短い答え:

残念ながら、含まれている SafeCracker JavaScript の多くを無効にする方法はありません。

長い答え:

SafeCracker は、可能な限り汎用的であり、最大の視聴者のニーズに合うように設計されています。

このトレードオフにより、SafeCracker は jQuery、jQuery UI ウィジェット、jQuery ツール、およびその他のさまざまな jQuery プラグインと関数をバンドルして、クライアント側のフォーム検証とカスタム フィールド タイプの表示を容易にします。

あなたが示したように、jQuery が SafeCracker によって自動的に出力されるのを無効にすることができます— たとえば、EE のコントロール パネルから利用可能な新しいバージョンを使用したい場合 — そして、DatePicker を無効にすることはできますか?コアの SafeCracker ライブラリをハッキングせずに残りの JavaScript が出力されるのを妨げないでください

当然のことながら、私はこの「すべてを含めて台所の流し台のアプローチ」の大ファンではありません。無関係で肥大化したスクリプトがページに追加されるのを見るのは嫌いです。

それにもかかわらず、SafeCracker が出力するすべての JavaScript を含むように構築されたのは、それらを削除する承認された方法がないため、明らかに設計上の決定です。そのため、私たちは本質的に、予期せぬ将来のために彼らに対処することに行き詰まっています.

これについて強く思うなら、EllisLab に Feature Request を送信して、本当に必要なものよりも多くの JavaScript を出力する SafeCracker のずさんな方法をより柔軟に設定できるようにすることをお勧めします。


興味のある方は、次のファイルの行 887 付近をピークにして、SafeCracker タグ ペアにバンドルされている jQuery UI ウィジェットの数を確認してください。

/system/expressionengine/modules/safecracker/libraries/safecracker_lib.php


注: 問題を自分で処理したい場合は、$js_defaultsand$ui配列内の一部の項目をコメント アウトして、JavaScript が出力されないようにすることができます。ただし、そうする場合、SafeCracker の操作に対するすべての責任とリスクを負うことになります。

于 2011-06-25T03:29:46.467 に答える
0

rjb の回答以降、これが変更されたと想定していますが、SafeCracker は、ページの読み込み時間を大幅に短縮するのに役立つ 2 つのパラメーターを提供しています。

include_jquery="no" safecracker_head="no"

関連 文書

于 2012-03-01T04:35:46.600 に答える