300 ページ以上で $(selector).load(path) 関数を使用するサイトがあります。現在、クライアントの要件が変更されており、これらのページを呼び出すためにクロス ドメインにアクセスする必要があります。
そのために、YQL を使用して、すべての .load( 関数をクロスドメイン関数に置き換える必要があります。
.load 関数をオーバーライドしてデフォルトを防止し、独自のコードを実行することは可能ですか?
300 ページ以上で $(selector).load(path) 関数を使用するサイトがあります。現在、クライアントの要件が変更されており、これらのページを呼び出すためにクロス ドメインにアクセスする必要があります。
そのために、YQL を使用して、すべての .load( 関数をクロスドメイン関数に置き換える必要があります。
.load 関数をオーバーライドしてデフォルトを防止し、独自のコードを実行することは可能ですか?
特に$.fn.load
引数に応じて異なることを行い、それを置き換えるとそれらすべてのサブ関数に影響するため、これを行う明確な方法はありません。
ただし、jQueryは AJAX フックをサポートしており、目的を達成できる可能性があります。
IE の XDomainRequest のサポートだけが必要な場合は、次のプラグインをご覧ください: https://github.com/jaubourg/ajaxHooks/blob/master/src/ajax/xdr.js
とにかく、本当に jQuery の ajax ロード機能を置き換えたい場合は、次のコードでそれを行う必要があります。
var _load = $.fn.load;
$.fn.load = function(url, params, callback) {
if(typeof url !== "string") {
return _load.apply(this, arguments);
}
// do your ajax stuff here
}
これは、誰かがイベントをバインドするかonload
、AJAX ロードを実行するかを決定するために jQuery が使用するチェックとまったく同じです。
最も合理的な方法は、jquery 関数をオーバーロードせず、単にお気に入りのエディターで検索と置換を行い$(xxx).load(
、yourpackage.load(xxx,
.
これは、300 個の js ファイルでも数分で実行できます。リーダーは jquery 関数が doc にないことをすることを決して期待しないので、将来の変更はより簡単になり、コードはより読みやすくなります。
はい、可能です:
$.fn.load = yourFunc;
おすすめですか?ないと思います。