5月
26
2008
GreyBoxが動かない(2) : GreyBox Show Plugin
前記事でGreyBoxが使っているJavascrptライブラリであるAJSライブラリでのwindow.onloadを書きました。
続いて他のJavascriptライブラリでのwindow.onloadの書き方を・・・。
AJSライブラリではこう書きました。
AJS.AEV(window, 'load', function() {
alert('after AJS');
alert('body');
GB_show("Hello world", "http://google.com");
alert('before call AJS');
}); これをJQueryで書くと
jQuery(function(){
alert('after AJS');
alert('body');
GB_show("Hello world", "http://google.com");
alert('before call AJS');
});Prototype
Event.Observe( window, "load", function(){
alert('after AJS');
alert('body');
GB_show("Hello world", "http://google.com");
alert('before call AJS');
});mootools
window.addEvent('domready', function(){
alert('after AJS');
alert('body');
GB_show("Hello world", "http://google.com");
alert('before call AJS');
});となります。
特定のライブラリに依存している(特定のJavascriptライブラリを必ずページ毎に読み込んでいる)場合ならそのライブラリの書き方で書いた方がスマートですね。
テンプレートや、エクステンションを追加・変更したとき、今まで動いていたJavascriptが動かなくなったらまず、onloadをソースから探してみると意外にそこに原因があったりするので解決の近道になるかもしれません。
Joomla!で作られたサイトを見ているとエクステンションにより、使っているJavascriptライブラリが異なっているのでしょうが、3つ以上のライブラリを読み込んでいるサイトもあります。ですが、通信速度のことを考えないならばそれで動作していればそれで良いと思っています。書き直すってのも無理があるし、特定のライブラリに依存したものだけを探すのも難しいですしね。
今回、これを書いていてエクステンションを作るとき、Javascriptライブラリを利用するなら複数のライブラリに対応させるようにした方が良いかもしれないと思いました。(するかどうかは別ですけど・・・。)パラメータで切り替えできれば、複数のライブラリを利用せずにすみますね。今までもそうですが、そのライブラリを出力するかしないかのパラメータは、なるべくつけるようにしています。




































