jquery-ui と jquery min へのアクセスが必要なブックマークレットに取り組んでいます。もちろん、ページに既に jQuery がロードされている可能性があり、競合を回避する必要があるという懸念があります。
http://benalman.com/code/javascript/jquery/jquery.ba-run-code-bookmarklet.jsにある Ben Alman のコードを使用して、jQuery を適切に導入し、UI をハッキングしてロードすることもできましたが、遅延に問題があるようで、jQuery UI をすぐに使用する準備ができていません...
実際のコードを実行する前に、両方のスクリプトを順番にロードするより良い方法はありますか?
(function( window, document, jQuery, req_version, callback, callback_orig, parent, script ){
if ( !window[jQuery] || req_version > window[jQuery].fn.jquery ) {
parent = document.documentElement.childNodes[0];
script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js';
parent.appendChild(script);
callback_orig = callback;
callback = function($, L) {
'$:nomunge, L:nomunge';
$(script).remove();
callback_orig( $, L );
};
}
if (typeof jQuery.ui == 'undefined'){
parent = document.documentElement.childNodes[0];
scriptui = document.createElement('script');
scriptui.type = 'text/javascript';
scriptui.src = 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.js';
parent.appendChild(scriptui);
alert('Loading your matches...');
}
(function loopy($){
'$:nomunge'; // Used by YUI compressor.
( $ = window[jQuery] ) && req_version <= $.fn.jquery
? callback( parent ? $.noConflict(1) : $, !!parent ) : setTimeout( loopy, 50 );
})();
})( window, document, 'jQuery', '1.3.2',
function($,L) {
'$:nomunge, L:nomunge';
<all the jquery stuff goes here>
Using jQuery UI in a Bookmarkletに詳細な回答がある同様の質問がありますが、これを CoffeeMarklet から「標準」の js に変換できませんでした。