Javascriptライブラリ'prototype.js'には要素のposition属性を位置を変えずに簡単に変えることができるメソッド

Element.relativize
Element.absolutize

が用意されている。

それぞれCSSスタイルのposition属性を

relative

absolute

に変えてくれるメソッドだが'relativize'のIEでの挙動がどうも前々からおかしいなと思っていた。

例えば、下記のスクリプトはすべてのIMGタグのposition属性を'relative'に変えるごくごく簡単なスクリプトだが

$$('img').each(function(elem) {
    elem.relativize();
});

これをIEで実行するとエラーが起きる。

ただしこれを下のようにちょっと修正するだけで問題なく動いてはいた。

$$('img').each(function(elem) {
    elem.relativize(elem);
});

まあ、動いたのでそれ以上考えず使っていたんだが、IE8では修正版の方も動かなくなってしまった。

error01.jpg

そんなこんなで修正の必要があり、結局は

$$('img').each(function(elem) {
    elem.setStyle({
        position: 'relative',
        top: '0px',
        left: '0px'
    });
});

こんな風に修正することになってしまった。

カテゴリ:

トラックバック(0)

トラックバックURL: http://blog.beanz-net.jp/beanz_mtos/mt-tb.cgi/65

コメントする