ひまつぶし雑記帖

doncha.net制作・発行:KindleやiBooks、楽天kobo、BOOK☆WALKERで読む電子書籍

せっかくの週末なのに

2008/11/8 [15:59:02] (土) 天気

曇天雨混じりの寒空、だ。おまけに、週末まで、ブラウザ間の解釈に違いにムカつく。

Ajaxで取ったデータをコンテナに流し込んで、そいつをポップアップ風に表示する、てのはありがちなこと。で、「ポップアップ風」てのはページ上の最前面に表示するのが当然なので、z-indexというのを使う。
こいつの解釈が、FireFoxやSafariと、IEで違ってるので悶絶。ありえねえ。

firefox safari
z-indexが最優先。z-indexの大きいものが必ずページ上最前面に表示される。
z-indexの指定がなければ、HTMLの順番(後ろのものが上に)

ie
HTMLの順番がz-indexよりも優先される、っぽい。z-indexの指定に関わらず、HTMLの後ろに別のコンテナが書かれていたら、それが上となってz-indexで表に出したいコンテナは下に潜りこんでしまう。

ieでz-indexの指定を、別のコンテナに適用するには、z-indexを指定したコンテナの親コンテナにもz-indexを指定して前面に出すか、後ろのコンテナにz-indexを指定して背面にまわすか。
if(document.all){
    $(c).parentNode.style.zIndex=999;
}
って、なんでieだけのために、と思いつつ入れてみた。とりあえず、直後のコンテナに対しては意図どおり…だけど、さらにコンテナをまたがってポップアップすると、さらに後ろのコンテナにz-indexの指定が勝てなくて、下に潜り込んでしまった。

もうなんかね。ieにイラついたので、ieの時だけ。
HTMLのフッター部分に(最後に)ポップアップ用の空コンテナを用意、
body左上(0,0)から表示位置にある該当div要素の座標を取得して、
絶対位置指定で表示

function get_offset(ele) {
    var ele = (typeof ele == 'string') ? 
            document.getElementById(ele) : ele;
    var valuetop = 0, valueleft = 0;
    do {
        valuetop += ele.offsetTop || 0;
        valueleft += ele.offsetLeft || 0;
        ele = ele.offsetParent;
        } while (ele);
    return {left:valueleft, top:valuetop};
}
body左上から、divなどblock要素の座標を取得するスクリプトを、検索しまくり。ありがたくいただいた。

ううううむ。しかし、こんなしょーもないことに半日も取られてしまって…ふぁっきんIEが。

 

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
contact:
»運営者
@t2aki@tokoroten.doncha.net

ところてんx5

2024/4/19 20:13

帰ったら修正入れよう

2024/4/19 20:12

to_poolはちゃんと意図通りにメンションをpoolに保存してるので問題ない。
disp_timelineにcircle判定を入れた時にバグった。mentionはpublicでもcircleでもないのでここで弾かれてる。
mentionは無条件で表示させないとだめだろ

2024/4/19 13:30

うげ。DMを取りこぼしてる

検索
<<2024/4>>
 123456
78910111213
14151617181920
21222324252627
282930

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版