Przeglądałem wszystkie popularne biblioteki js, ale nie mogę znaleźć takiego, który ma funkcję szerokości dla elementu DOM, który faktycznie odpowiada za tryb dziwactwa w Internet Explorerze. Problem polega na tym, że padding i granice nie są liczone na szerokość, gdy włączony jest tryb dziwactwa. O ile wiem, dzieje się tak, gdy typ doctype zostaje pominięty lub doctype jest ustawione na html 3.2.Szerokość elementu rozliczającego tryb dziwactwa w javascript?
Oczywiście mogłem po prostu ustawić doctype na zgodny ze standardami, ale ten skrypt może być osadzony w dowolnym miejscu, więc nie mam kontroli nad doctype.
Aby przełamać ten problem na mniejsze części:
1) W jaki sposób można wykryć Quirks Mode? 2) Jaki jest najlepszy sposób na wyodrębnienie obramowania i wypełnienia z elementu, aby to zrekompensować?
Przykład z prototypu:
<html>
<head>
</head>
<body>
<div id="mydiv" style="width: 250px; pading-left: 1px; border: 2px black solid">hello</div>
<script>
alert($('mydiv').getWidth())
</script>
</body>
</html>
wynik:
253 (ff) 250 (IE)
Z góry dzięki!
skąd atrybut currentStyle pochodzi? Próbuję go w ff i wydaje się być niezdefiniowany – christoff
currentStyle jest IE w wersji getComputedStyle(). Zwraca rzeczywistą wartość danej właściwości CSS. Możesz przeczytać więcej w artykule PPK: http://www.quirksmode.org/dom/getstyles.html – pawel
Z prototypem możesz również użyć Element.getStyle(). –