page_adsence

2008年12月10日水曜日

画像やswfのキャッシュに関して

javascriptのImage Objectを使って画像があるかどうかを判定するコードを書いていると

IE6,IE7でonloadもonerrorもonabortも返ってこないという現象があった。

初回は普通にできるが2回目以降のチェックの際にURL自体はもらってきているのに、

処理が先に進まない・・・。



JqueryのLoad使ってやろうと思ったら、それはシステムエラーでなんかうまく動かない・・・。

なんだろうと思いつつ原因を探ってみると、

どうやらブラウザに残ってるキャッシュにアクセスして判定しようとしていたため、

処理が止まってしまっていたらしい。

キャッシュを残らないように「?~~」(適当なクエリ)をつけて送信すれば、

毎回サーバにアクセスされる。

2008年12月9日火曜日

objectやembedタグに直接display:noneをすると、一部のSafari、chromeで消えない

ジャック中に別のswfは基本非表示にしているが、
objectタグやembedタグに直接display:noneをかけると、Safariやchromeで非表示にならない。
非表示にしたい場合はvisibilityをhideenにする

2008年11月19日水曜日

FireFox3でoverflow:autoがあるとFlashの動作がおかしくなる

いつも通り全画面ジャックのブログパーツを作ってたらへんな現象に遭遇した。

■現象
クリックイベント自体は取れてるが、そのイベントに対してハンドルされているFlashの処理が実行されない。
通常、Flash上で右クリックするとFlash用のメニューがアイコンがある位置に出てくるが、
この場合画面左上のほうに出てくる。
また、アイコンがpointerのはずなのに、defaultになってしまう。

■原因
おそらくblog上にoverflow:autoがかかってるエリア上ではFlashコンテンツがうまく動作しないというブラウザのバグらしい・・・。

■対策
flashのwmodeをwindowにすると普通にいける。
以前IE6で透過するとクリックイベントがうまく取れないという現象があり、
それは透明に近いレイヤーを引くことで解決できた。
同様のことを今回のブログパーツでやってみたがダメだった。
JavaScriptで強制的にCSSを書き換えるにしても、
該当のCSSを検索するのに時間がかかるので現実的ではない。
正直お手上げ。
強行手段としてはいくつか案があるがどれも微妙な気がする。

■案1
CSSを追加することで強制的autoからhiddenにする
*{overflow:hidden !important}


これを全画面ジャック時に適用する。

■案2
wmode="window"のswfをイベントが設定されている位置に浮かせる。
これも相当な力技な上に、複数の場所でイベントが設定されてる場合は大変なことになる。

■参考記事

IE7でswfobjectがうまく動作しない

■現象
IE7でswfobjectを利用してFlashコンテンツをDOMに追加しようとするとエラーが出る。

■原因
FlashPlayerがバージョンアップの際に、古いバージョンのFlashPlayerを削除せずにインストールしているため、JavaScriptでFlashのバージョン判定する際に判別できずにエラーになってしまう。

■対策
現在のところ、そのような現象に当たったことがないので、対応は何もしてない。
もしやるとすればどうすっかなー。
よくわからん。
yktkさんも今のところ対策はしてないとのこと。
今までそういった報告ないから、結構レアなケースなのかな。
同時に大量にそういった報告がない限り対応する気がしない・・・。
しばらくは個別に対応してもらうっきゃないかなー。

■参考記事