0

私の XLST では、「バニラ」javascript を使用して、レポート内の一部の div を操作しています。そのうちの 1 つは画面中央の他のすべての上に表示され、ページが読み込まれるときに次のように呼び出していました。

var overlayObj = document.getElementById('theoverlay');
overlayObj.style.left = Math.max(0, ((window.innerWidth - overlayObj.offsetWidth) / 2) + window.scrollX);
var padding = 50;
overlayObj.style.top = window.scrollY + padding;
overlayObj.style.bottom = -window.scrollY + padding;

これは、ページがサイズ変更されてスクロールされたときにも呼び出され、正常に動作しますが、XSLT に doctype がなく、これが IE で quirks モードを引き起こし、ほとんどすべてを壊していることに気付きました。そこで、HTML5 doctype を追加しましたが、上記のコードは何もしません。の値を起動するアラートを設定しoverlayObj.style.leftました。ファイルに doctype がない場合は正確な div サイズが返されますが、doctype がある場合は値が返されますauto

なぜこれが起こっているのか誰にも分かりますか?そして、それをどのように私に値を与えるのですか?

私が使用していたデータを取得するとき:

var computedStyle = window.getComputedStyle(overlayObj, null);
alert("left value: " + computedStyle.getPropertyValue("left"));

overlayObj.style.topdoctype があるときに戻ろうとすると、応答がありません。繰り返しになりますが、doctype がなくても問題はなく、値が返されます。

4

1 に答える 1

2

クァークズモードでは、ブラウザは壊れたCSSを理解しようとしますが、標準モードでは、topまたはleftに適切なCSS値を割り当て、数値と単位で構成されていることを確認する必要がありますfoo.style.left = 200 + 'px';。したがって、そのユニットを提供し、割り当てが機能することを確認してください。

于 2012-07-18T17:59:35.527 に答える