Help! Onmouseover - IE перезагружает картинки

12
Коля Дубр
На сайте с 02.03.2005
Offline
153
#11
-AlexK-:
background-position: 0 -37;

-37 чего? Попугаев? =) Добавьте px, возможно в этом проблема.

Разрабатываю общую шину (http://habrahabr.ru/company/floxim/blog/268467/) помаленьку. ...а еще у меня есть бложек (http://www.blogovo.ru/).
-AlexK-
На сайте с 10.04.2006
Offline
21
#12
Посмотрите три варианта на выбор: http://1.x9.ru/1/
Рекомендую последний. Единственная проблема - растяжка на 100% в IE. Но она имеет решение.

Ayavryk, ничего не подходит, IE упорно качает картинку! Что за браузер такой?

2 Коля Дубр. Удавов, Николай, удавов! =) Не в этом дело! 100%

"Останься... в живых"
AM
На сайте с 04.11.2003
Offline
57
#13

-AlexK-, у меня была точно такая проблема.

При наведении указателем на ссылку возникала задержка отображения фона. Если быстро и хаотично двигать мышкой по схожим элементам, возникал эффект "отсутствия" меню. К тому времени винда уже изрядно подтормаживала, и "вылечил" я этот баг переустановкой самой винды.

Но прежде, чем использовать эту радикальную меру, советую проверить на более-менее чистой и быстрой машине.

Ayavryk
На сайте с 11.10.2003
Offline
209
#14
-AlexK-:
Ayavryk, ничего не подходит, IE упорно качает картинку! Что за браузер такой?

Приношу свои извинения. У меня быстрая линия я не успевал замечать подкачку. При отслеживании трафика обнаружилось. Причем в MSIE5.0 все тип-топ.

Надо порыться.

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
Ёжик В Тумане
На сайте с 26.07.2006
Offline
16
#15

Сделайте так:


<style type="text/css">
.percent100, .percent100 a{position:relative;margin:0;padding:1px;width:100%;height:auto !important;height:100%;}
img.showIMG1, img.showIMG1{position:absolute;top:0;left:0;}
img.showIMG2{display:none;}
</style>
<script type="text/javascript">
function show(documentObject){
if(documentObject.childNodes.item(this.elemntLevel).style.display=="none"){
documentObject.childNodes.item(this.elemntLevel).style.display=="block";
documentObject.childNodes.item(this.elemntLevel + 1).style.display=="none";
}else{
documentObject.childNodes.item(this.elemntLevel).style.display=="none";
documentObject.childNodes.item(this.elemntLevel + 1).style.display=="block";
}
}
show.prototype.elemntLevel = 1;
show.prototype.setElementLevel = function(level){
this.elemntLevel = level;
}

</script>
<TD id="td2" class="out">
<div class="percent100">
<A class="item1" onmouseout="show(this);" onmouseover="show(this);" href="#">
<img src="путь" class="showIMG1" alt="">
<img src="путь" class="showIMG2" alt="">
Пункт1
</A>
</div>
</TD>

Код возможно надо доработать (я его вообще не проверял)
, но в двух словах о всем коде:

Грузятся картинки, у обеих картинок абсолютное позиционирование, а у родительского объекта позиционирование относительное, одна из подгруженных не отображается, т.к. у нее display:none. Код JS получает ссылку на ссылку (извините за тавтологию) на которую навели, вычисляет ее первый дочерний (по умолчанию поставил show.prototype.elemntLevel = 1), если у первого дочернего style.display=="block" , то он становиться не видимым, а второй дочерний становиться видимым, иначе наоборот, первый дочерний становиться не видимым, а второй дочерний видимым ☝ . Надеюсь понятно объяснил (а то сам чуть не запутался :) ).

Ушел в себя, забыл про форум.
Вернусь ли? Не знаю... Если нужен, пишите в аську...
Ayavryk
На сайте с 11.10.2003
Offline
209
#16
Ёжик В Тумане:
Сделайте так:

Ужос :(

Не может быть, что нет более приемлемых решений.

Junior
На сайте с 19.04.2005
Offline
58
#17

Ayavryk, тут надобно ещё дизайн посмотреть для полной картины, а то может все решается 5-6 строчками CSS кода :)

Труженик КП, ТЗ и ИА
Ayavryk
На сайте с 11.10.2003
Offline
209
#18
Ayavryk
На сайте с 11.10.2003
Offline
209
#19

Итого окончательное решение в виде заплатки:

<!--[if IE 6]>

<style>

* html { zoom: expression(document.execCommand("BackgroundImageCache", false, true)) }

</style>

<![endif]-->

Рабочий пример: http://1.x9.ru/1/

UPD

А вот еще подсказали несколько рецептов припарки:

http://www.fivesevensix.com/studies/ie6flicker/

Особенно понравился решение через .htaccess

-AlexK-
На сайте с 10.04.2006
Offline
21
#20

Всем огромное спасибо! Решение найдено. Никогда не сомневался в том, что оптимизаторы - это "люди с головой"! :) Ayavryk, Вы мозг... ну, или, по крайней мере, "человек, который нашел все" ;) Да, кстати, последний рабочий пример, почему-то у меня все-равно не идет.

Всем, кому интересна данная тема. Попробовал три варианта:

1. Добавляем в .htaccess код:

BrowserMatch "MSIE" brokenvary=1

BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
BrowserMatch "Opera" !brokenvary
SetEnvIf brokenvary 1 force-no-vary

2. Решаем проблему с помощью JS:

<script>

(function(){
/*Use Object Detection to detect IE6*/
var m = document.uniqueID /*IE*/
&& document.compatMode /*>=IE6*/
&& !window.XMLHttpRequest /*<=IE6*/
&& document.execCommand ;
try{
if(!!m){
m("BackgroundImageCache", false, true) /* = IE6 only */
}
}catch(oh){};
})();
</script>

3. В файл css добавляем:

<!--[if IE 6]>

* html { zoom: expression(document.execCommand("BackgroundImageCache", false, true)) }
<![endif]-->

Решение 1. в моем случае не сработало. А вот 2 и 3 работают (собственно, код 2 и 3 - одно и то же).

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий