2

Android WebViewを使用して、アプリのHTMLコンテンツを表示しています。パディング、マージン、境界線など、要素(通常はdiv)の全高を動的に見つける必要があります。JavaScriptを使用していますが、jQueryを使用できません。

scrollHeight私は身長を取得するために自分のdivで使用しています。を使用してdivの計算されたスタイルを取得し、 andvar style = window.getComputedStyle(DIV, null);を呼び出すことで上下のマージンを取得しました。どちらも0pxでした。問題は、 divに属するマージンの高さをまだ考慮していないことです。style.marginTopstyle.marginBottomscrollHeight

divの子要素(通常はPまたはH *タグ)を取得し、同じフィールドを同じ方法で取得しました:scrollHeight、、、。sはまったく同じです(通常、divごとに子が1つしかないため)が、通常、親要素に反映されていない上または下のマージン値が子にあります。marginTopmarginBottomscrollHeight

なぜそうなのかよくわかりません。子の余白が親の外にレンダリングされているように見えますが、親はそれを認識しておらず、直接アクセスすることはできません。

親要素を介して子によって定義されたマージンにアクセスする方法を探しています。それは可能ですか?

この質問は非常に役に立ちましたが、このようにレンダリングされ、スレッドが冷たくなったように見える理由の根本的な理由は見つかりませんでした。

ありがとう!

4

1 に答える 1

1

Sime Vidas は私を正しい方向に向けてくれたので、ありがとう!

div とその子の間の折りたたまれたマージンの正確な高さを見つけようとしていることに気付きました (しかし、私の質問ではそれをかなり異なる言葉で表現しています)。DOM を介してその情報にアクセスすると、親と子のスタイル属性が通知されますが、折りたたまれたマージンの高さは報告されません。

だから...私の質問に対する本当の答えはNOです。折りたたまれたマージンの属性に直接アクセスする方法を見つけることができませんでした。

私の div の属性を取得し、次の DivoffsetTopの属性との違いを見つけることも同様に優れています。offsetTopこれにより、余白の最終的なレンダリングを含む全体の高さが得られます。マージンのみを見つけるには、 を引きますscrollHeight

これはすべてのシナリオで機能するとは限りませんが、私の目的には十分でした。

于 2012-09-18T19:37:24.750 に答える