【クロスブラウザ】getDynamicStyle()
インラインでスタイル指定しない場合の値は、たとえばoj.style.topなどでは取れない。という件について、いままでもいろいろなところで個別に話をしてきましたが、クロスブラウザ関数にしておきます。
たとえば、ページのどこかでtop:100pxなどと、明示的に指定していなければ、"auto"などが入っている可能性があることにも注意が必要です。
動的なスタイル値取得
getDynamicStyle(id,style)
http://jsgt.org/js/books/dhtml2/part3/cross/getdynamicstyle.htm
<html>
<head>
<style>
#test{
position:absolute;
top:100px;
left:100px
}
</style>
</head>
<body>
<div id="test">aaa</div>
<script>
alert("inlineのスタイル指定がなければ\ndocument.getElementById('test').style.topでは取得できません\n"+document.getElementById('test').style.top)
a = getDynamicStyle('test','top');
alert("でもgetDynamicStyle('test','top')で大丈夫\n"+a)
function getDynamicStyle(id,style){
if(!document.getElementById)return;
var node = document.getElementById(id);
if(node.currentStyle){
return node.currentStyle[style];
} else if(document.defaultView){
return document.defaultView.getComputedStyle(node,'').getPropertyValue(style);
} else {
return null
}
}
////
// getDynamicStyle(id,style)
//allow
// Win e6 f1 o8
// Mac e5 f1 o8 s2
//deny
// Mac s1.25
// Linux k3
//
//@see http://www.mozilla-japan.org/docs/dom/domref/examples7.html
//@see http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/currentstyle.asp
</script>
</body>
</html>
高橋 ( 2006年02月02日 22:31 )
はい、どうぞ〜。ライセンスはパブリックドメインです。改造、商用利用も切り張りも自由自在、連絡不要です。って、あえていうほどのコードでもないですねf^^;;
Mitsuhal ( 2006年02月03日 04:44 )
return node.currentStyle.top;
↓
return node.currentStyle[style];
ですよね?
高橋 ( 2006年02月03日 15:52 )
Mitsuhal さんありがとうございます。
直しました。
高橋 ( 2006年02月03日 15:56 )
Safari1はKonquerrorと同じバグっぽいです。document.defaultView.getComputedStyleまでは存在しているので、なにかの呪文で解けるかもしれないです。ちなみに(node,null)では駄目なことだけは確認しましたが、、、。
高橋 ( 2006年02月03日 17:45 )
インテルMacになるついでに、デフォルトもFirefoxしてくれないかな、、、動作確認が楽になる、、、とも限らないかなf^^??
古籏一浩 ( 2006年02月04日 13:25 )
Mac+Safari 2, Firefox 1.5でちゃんと動きました。
う〜む、こういうのは便利ですね〜。
使わせてもらってもいいですか?
古籏一浩 ( 2006年02月04日 13:26 )
どうもありがとうございますです。
Safari 1でも動くとグッドなんですけどね〜。
何か策があるかなあ。
もうG5のHDDがいっぱいで身動きが取れないf(^^;
HDD合計は2TB以上あるのに、残りが14.04GB...
古籏一浩 ( 2006年02月04日 13:27 )
for...inで中身を覗いてみると何かヒントとかないかなあ。
ただ、DOM操作もSafariは思わぬ落とし穴があったりするので何とも...
#頑張ってHDDの空きを33GBまで増やしましたf(^^;
福田 ( 2006年06月17日 18:03 )
はじめまして。
先ほどから座標の位置が取得できずに
5、6時間悩んでいたのですが、
おかげ様で解決しました。ありがとうございます。
(←clickで入力欄open)