何かと便利なLightbox。

だが、Lighbox2をSSL通信領域で使うと、

ブラウザ界を代表する困ったちゃんIEでセキュリティ警告が出る。


SSL通信になってない項目がページの中にあるよ。っていう警告なんだけど、

いくら調べてもそんなのページの中にない(>_<)
何が原因なのかさっぱりで、丸二日悩んだ・・・。Lightboxが悪いのか、IEが悪いのか。


で、最終的に、Lightboxディレクトリ中「/css/lightbox.css」に原因があることが判明。
13行目の記述。

#prevLink, #nextLink{ width: 49%; height: 100%; background-image: url(data:image/gif;base64,AAAA); /* Trick IE into showing hover */ display: block; }

「background-image: url(data:image/gif;base64,AAAA);」
↑どうやらこれが問題らしい。。。見慣れない記述だ。
おそらく、BASE64エンコードしたときに値が「AAAA」となる、Content-typeが「image/gif」のデータを背景として読み込んでいる様子。

だったら、こういうファイルを実際につくればいいのでは。
ってことで、そのファイルをまずPerlで作る。

#!/usr/bin/perl -w

use strict;
use MIME::Base64;

my $fh;
open( $fh,'> hover.gif') || die("だめだった...orz\\n");
print $fh decode_base64('AAAA');
close( $fh );

print "できた!\\n";

まあこんな感じ。適当で申し訳ない(^-^;

それで、このスクリプトで作った「hover.gif」を、
lighbox内のディレクトリ「images」へアップロードし、
「/css/lightbox.css」の13行目を

#prevLink, #nextLink{ width: 49%; height: 100%; background-image: url(../images/hover.gif); /* Trick IE into showing hover */ display: block; }

に変更したら、警告は出なくなった。


今回は、一応CSSに記述されている内容にしたがって改造したけど、
そもそもBASE64にしたとき「AAAA」なGIF画像なんて意味があるわけがないので、
もしかしたら、そんな画像をわざわざ作らなくても、何か適当なGIFを背景に指定してやればよかったのかも。

トラックバック

このブログ記事に対するトラックバックURL:

コメント & トラックバック

私も同じ問題に2日悩みましたので、通りすがりですが思わずコメントです。

> もしかしたら、そんな画像をわざわざ作らなくても、
> 何か適当なGIFを背景に指定してやればよかったのかも。
これは、その通りみたいです。ただのブランクGIFでOKでした。
私の環境では、prototype.js(1.6.1_rc3)にも若干の細工が必要でした。下記、Googleから辿り着いた他の方の一助になれば。
var el = document.createElement(‘iframe’),
isBuggy = false;
の後に、下記のような1行が必要です、多分。
el.setAttribute(‘src’, ‘javascript:false’);

>CogniTomさん
こんにちは。やはり皆さん「2日間」悩むんですね!笑

やはり、画像はなんでもいいのですね。単なるダミー。。。

prototypeも細工が必要ですか!?それは非常に役に立つ情報です。ありがとうございます!

Comment feed

コメントする