jQueryとjQuery UIがロードされているかを確認するBookmarklet

February 09, 2011

ブックマークレットを jQuery で作る際にチェックが必要なので。 目的は jQuery 及び jQuery UI を二重に読み込みを防ぐこと。jQuery と jQuery UI が読み込まれてるか確認するブックマークレット [Sample1](javascript:(function(){alert(“jQuery is “+typeof jQuery);alert(“jQuery UI is “+typeof jQuery.ui)})();) 内容はこんな感じ

javascript:(function() {
    alert('jQuery is ' + typeof jQuery);
    alert('jQuery UI is ' + typeof jQuery.ui);
})();

単純ですね。ロードされてなければ “undefind” を返してくるはずです。 これに jQuery 及び jQuery UI をロードするスクリプトを加えて [Sample2](javascript:(function(){alert(“1:jQuery is “+typeof jQuery);var b=document.createElement(“script”);b.type=“text/javascript”;b.src=”http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js”;document.body.appendChild\(b\);b.onload=function\(\){alert\(“1:jQuery UI is “+typeof jQuery.ui);var a=document.createElement(“script”);a.type=“text/javascript”;a.src=”http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js”;document.body.appendChild\(a\);a.onload=function\(\){alert\(“2:jQuery is “+typeof jQuery);alert(“2:jQuery UI is “+typeof jQuery.ui)}}})();) こんな感じでロードされてるか、ロードされたかを確認できるのではないでしょうか。

javascript:(function() {
    alert('1:jQuery is ' + typeof jQuery);
    var a = document.createElement('script');
    a.type = "text/javascript";
    a.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js';
    document.body.appendChild(a);
    a.onload = function() {
        alert('1:jQuery UI is ' + typeof jQuery.ui)
        var b = document.createElement('script');
        b.type = "text/javascript";
        b.src = 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js';
        document.body.appendChild(b);
        b.onload = function() {
            alert('2:jQuery is ' + typeof jQuery);
            alert('2:jQuery UI is ' + typeof jQuery.ui);
        }
    }
})();

実験 http://jqueryui.com/demos/draggable/ 両方ロードされている筈です。 http://www.google.com/ 最初は 1:でロードされていないものの、2:ではロードされています。 今回使った js を圧縮してくれるツール Online JavaScript/CSS Compression Using YUI Compressor 最後に バージョン違いには別途確認が必要ですね。


Profile picture

Webのフロントエンドからバックエンド、プロトタイピングからプロダクションまで。定額の開発サービスも。詳しくはAboutページで。