2008年12月09日
IE+Flash Player で Location Hash 使ったときにタイトルが変わる問題
Internet Explorer で Location Hash を利用したページに Flash を表示すると、IE のタイトルが #hoge のようになってしまうことがある。発生する条件は、Flash にフォーカスがあたったり、location.hash 値が変わったりしたとき。
この問題、世間の人はどうやって解決してるんだろうと思って、swfaddress のソースをみてみた。swfaddress は Flash で location.hash 扱うための有名ライブラリ。
swfaddress の JavaScript 側に次のようなソースを発見した。setInterval でこの処理が定期的に呼ばれているようだ。
// _d は document var _titleCheck = function() { if (_browser.isIE() && _d.title != _title) SWFAddress.setTitle(_title); }
要約すると、「IE でページのタイトルが勝手に変わってたら元に戻す」という処理になってる。んー、結局こうするしかないのか…。swfaddress はちょっと大げさだったので、自力で document.title を定期的に書き戻す処理を実装することにした。
IE7 でもこの問題は直ってない模様。MS と Adobe のどっちが悪いんだろなぁ…。ちなみに、IE8 には onhashchange イベント が追加されるらしいので、このバグ(?)が残っていたとしても、比較的すっきりと対処できそうだ。