Мне нужно приклеить полоску к нижней части клиентского представления в веб-браузере. Традиционно я бы использовал положение: исправлено; за исключением того, что мне нужно поддерживать мои клиенты IE 6. У меня есть очень обширный хак, чтобы приклеить панель к нижней части страницы и к содержимому, однако, когда пользователь прокручивает страницу вниз или вправо, панель остается фиксированной на странице.
Чтобы исправить эту проблему, я использую событие javascript, которое вызывается с помощью setInterval, а при запуске функции в инструментах отладки IE (8) событие запускается и изменяет атрибуты top и position left, но страница не перерисовывается элемент. Код работает, но элемент не движется, см. Ниже.
Как вы знаете, исправление должно работать в режиме причуд IE ... оно не может работать, если другие версии IE пытаются использовать стандарт. Поверьте мне, я пытался.
P.S. Это действительно усугубляет, потому что я также дважды проверяю поддержку IE9 ... поймите, что этот элемент не перемещается с полосами прокрутки в IE 6, 7 и 8, но перемещается в IE 9, и он по-прежнему отображает "IE Quirks Mode. " И Microsoft сказала, что этот релиз ничего не изменит, ...
Структура HTML
<body>
<div id="j_zoom_area" style="zoom:100%;">
The Application area the the zoom is changed (by the bar) for accessibility...
</div>
<div id="j_protectorite">
<div class="j_bar">
<div class="j_plate">Zoom Controls, Help, Search, other misc controls</div>
<div class="j_plate">Copyright info, privacy policy, etc...</div>
</div>
</div>
<script type="text/javascript" language="javascript">
j_doBar();
</script>
</body>
CSS для бара https://kscserver.com/ERP-API/Style/includes.css.
Особый javascript для исправления бара.
//This controls the scrolling of the bar
function j_FixBarSlowly(){
var nTop = 0;
var nLeft = 0;
nTop = (document.body.scrollTop + document.body.clientHeight) - 67;
nLeft = document.body.scrollLeft;
//document.title = document.body.scrollTop + '+' + document.body.clientHeight + '-67' + '=' + nTop + 'px';
document.getElementById("j_protectorite").style.Top = nTop + 'px';
document.getElementById("j_protectorite").style.Left = nLeft + 'px';
document.getElementById("j_protectorite").style.Bottom = '';
document.getElementById("j_protectorite").style.Position = 'absolute';
//Ie6,7,8 hack to force redraw
}
function j_doBar() {
//j_FixBarSlowly();
//if (setInterval != undefined) {
// setTimeout("j_doBar();",5);
//} else {
setInterval("j_FixBarSlowly();",5);
//}
}