別サイトでも Nucleus でブログサイトを運営していますが、ソニーのブログツール
FLO:Q を貼り付けると、Lightbox が効かなくなりました。
といっても、FLO:Q のせいだと判明するまでの道のりは遠かったのです。
JavaScript のデバッグモードを有効にして動かしてみると、スクリプトエラーになっています??
setTop: function(element,t) {
element = $(element);
element.style.top = t +"px"; <-- この行です
},
そこで、
setTop を呼び出しているところを見ると、
var arrayPageSize = getPageSize();
var arrayPageScroll = getPageScroll();
var lightboxTop = arrayPageScroll[1] + (arrayPageSize[3] / 15);
Element.setTop('lightbox', lightboxTop);
Element.show('lightbox');
となっています。
まずは、
Element.setTop('lightbox', lightboxTop) の
lightboxTop を
100 に変えて動かすと、エラーはでません。これは予想どおりです。
次に、
arrayPageScroll[1] に変えてみました。これもエラーにはなりません。
さらに、
arrayPageSize[3] に変えてみると、見事(笑)にエラーになります。
ということで、
getPageSize(); を調べてみることにしました。戻り値の箇所は、
:
arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
return arrayPageSize;
}
になっています。
そこで、
arrayPageSize = new Array(100,100,100,100); としてみました。
あれ、エラーになる??
ここで、困りました。
しばらく悩んだのち、しかたないので最終兵器 Visual Studio の出番です。
エラーの起こった箇所で、実行ポイントを変更して、とりあえず、呼び出し元にステップ実行で戻します。
次に、
getPageSize を呼んでいる箇所に、さらに実行ポイントを変更し、ステップ実行してみます。
するとどうでしょう!
Nucleusプラグイン NP_LightboxEX の、
getPageSize ではなく、
FLO:Q の
getPageSize が呼ばれているではありませんか。それで、そちらは配列の要素数は2つなんですね。
JavaScript の NameSpace に乗せ換えるのも手間なので、
arrayPageSize[3] の 3 を 1 に変更してお茶を濁すことにしました。
※しかし、ソニー!
※ブログツールとか言うのだったら、既存のものに影響を与えないように、ツール側で NameSpace 内に閉じるべきでしょうが!(怒!)