今回は、jQueryのコンフリクトでトラブルがありました。 忘れないうちに書き記しておきます。 jQueryは、非常によく使われるJavaScriptのライブラリです。 ゼロから作っていない環境で作業をすると、すでに入っていることがあります。 そういう場合に、あまりに古いバージョンが入っていると、今まで使っていたプラグインが使えなくなるので、別のバージョンを認識させる必要が出てきます。
アメーバブログのカスタマイズで起きたこと
アメーバブログのカスタマイズで、ある機能をプラグインで行いました。 しかし、うんともすんとも動かない。 ブラウザのコンソール画面(下記はFireFoxのアドオンFireBug)から
$().jquery;
と記述すると、“1.3.2”と表示されました。
“1.3.2”では厳しいので、もう少し新しいバージョンにすることにしました。 しかし、何度確認しても”1.3.2″のままです。 ソースを見ると、
http://stat100.ameba.jp/blog/js/apm001.js
にjQuery1.3.2が書かれているのですが、かなり下の方にソースがあります。 アメーバブログで自由にscriptが書ける場所は決まっているので、上書きすることができません。 jQueryには、こういう場合に対応できるように、noConflictという機能があります。 jQuery関数が使える「$」が1.3.2に奪われているので、「$」の持っている機能を別の文字に変えれば良いのです。
<script src="http://example.com/js/jquery.min.js"></script> <script> var $tukumemo = jQuery.noConflict(); </script> <script src="http://example.com/js/jquery.easing.1.3.js"></script> <script src="http://example.com/js/plugin.js"></script> <script> (function($){ $(document).ready(function(){ ... }); })($tukumemo); </script>
これで大丈夫、かと思ったら「jquery.easing.1.3.js」でエラーが起きました。
jQueryが競合しているとエラーが出るようです。 jquery.easing.1.3.jsを書き換えて、
(function(jQuery){ //jquery.easing.1.3.jsのscript ... })($tukumemo);
としました。 他のプラグインでも、古いバージョンだったり、コンフリクトで動かないものは、上記のように囲うと良いでしょう。
まとめ
アメーバブログのjQueryはバージョンが古いから気を付けよう! では、そんな感じで、またねー。
コメント