при наведении курсора мыши не возвращается в исходное состояние, а IE вообще его не показывает - PullRequest
0 голосов
/ 02 августа 2010

На этой странице здесь: http://mrwgrp.com/index.php Когда вы перемещаете изображения в заголовке, вы получаете изображения ниже. Клиент хочет, чтобы исходный текст возвращался на экран, как только вы на нем указали.

Кроме того, IE даже не показывает указатель мыши.

Есть идеи? Спасибо, A

Ответы [ 3 ]

1 голос
/ 02 августа 2010

DOM-узлы обычно должны иметь некоторое видимое содержимое, иначе некоторые IE не будут правильно запускать события мыши. Один из подходов к тому, чтобы заставить "фиктивные" области наведения мыши работать с IE, состоит в том, чтобы дать им видимый фоновый цвет на 1%, который не совсем видим, но IE будет запускать события.

Это правило должно работать в этом случае, чтобы IE не игнорировал события мыши:

#pic1, #pic2, #pic3, #pic4 {
  background-color: #fff;
  opacity: 0.01;
  filter: alpha(opacity=01);
}

Что касается возврата исходного текста на экран, не нужно ли вам добавить еще одно событие? В настоящее время похоже, что у вас есть что-то настроенное для «onmouseover», но больше ничего.

0 голосов
/ 02 августа 2010

Попробуйте это

Сохраните содержимое домашней страницы в переменной JavaScript после перезагрузки страницы;

<body onload="MM_preloadImages('images/re_ovr.gif','images/rev_ovr.gif','images/env_ovr.gif','images/contact_ovr.gif'); MM_storeHomePageText();">

Добавьте код отключения мыши для восстановления исходного текста;

<div id="pic1" onmouseover="MM_setTextOfLayer('homeText','','&lt;h3&gt;Linda Vista Redevelopment&lt;/h3&gt;\n\n&lt;p&gt;&lt;img src=&quot;images/linda-vista.jpg&quot; /&gt;&lt;/p&gt;\n\n&lt;p&gt;&lt;/p&gt;')" onmouseout=MM_restoreHomePageText();>&nbsp;</div>

Обратите внимание на &nbsp; внутри Div, дайте нам знать, что это решает вашу проблему IE

var homePageText = '';
function MM_storeHomePageText() {
    homePageText = document.getElementById('homeText').innerHTML;
}
function MM_restoreHomePageText() {
    document.getElementById('homeText').innerHTML = homePageText;
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_setTextOfLayer(objId,x,newText) { //v9.0
  with (document) if (getElementById && ((obj=getElementById(objId))!=null))
    with (obj) innerHTML = unescape(newText);
}
0 голосов
/ 02 августа 2010

Похоже, что IE не обнаруживает mouseover, если DIV пусто.Если вы установите background-color для #pic1, #pic2, #pic3 и #pic4, это сработает (но превосходит цель).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...