c/fe

http://d.hatena.ne.jp/uzulla から移行しました。

OSX+Safariのバグ

Document.writeでページヘッダーを書き出すページを書いていて、よくあるプルダウン(DIVの箱を出したり消したり)を実装したのだが、

どうもDocument.writeでDIVレイヤー(プルダウン部分、絶対座標指定)を書くと、本文部分の下にDIVレイヤーが潜ってしまう挙動が発生した。


Z-indexを幾ら操作しても直らず(下に潜る)。
プルダウンをDocument.writeを一時的にやめて、本文に直接書くと直る(本来結果は同じ筈)。

どうも他のブラウザ(WinSafariすら)と挙動が違うのでこれはSafariのバグなんだろうなと。



こんな感じの。

<script>
 document.write(Div箱 style=absolute)
</script>
Div箱 style=overflow:hidden

HTMLで、
上で書いたDIV箱が下のDIV箱に潜っちゃう。

これだと

Div箱 style=absolute
Div箱 style=overflow:hidden

もぐらない


それぞれをさらにDiv箱でくくってみたりしてもダメ。
どうもIEのセレクトタグのZ-indexバグや、OS9Flash要素Z-indexバグみたいに一番優先されてしまうバグらしい。

本文となるDiv箱をこんな風に

<script>
 document.write(Div箱 style=absolute)
 document.write( $(divhako).innerHTML )
</script>
Div箱 id=divhako style=overflow:hidden;display:hidden;

Documentwriteで書いてもダメ(これが意味不明)


結局下とになる予定のDIV箱のOverflowを無くす事で回避が出来た、まあWin版とMac版のSafariで挙動が違うのでバグだろね。


でもこれじゃーWindows版のSafariで開発ラクチン〜!とか言えないなあ…。
まあ、そもそもWindows版のSafariはProxyが使えんのでどうしようもないのだが(イチイチSocksを別アプリから履かせるのめんどい)