2012-10-09 2 views
1

dreamveaver cs4에서 내 웹 사이트 탐색의 롤오버 버튼을 만들었습니다. 이미지 교환 기능은 Chrome & 파이어 폭스 브라우저에서 정상적으로 작동하지만 IE9에서는 교체 한 사진이 마우스를 굴려 오른쪽에있는 두 개의 셀에 표시됩니다.JS 함수가 IE9에서 제대로 작동하지 않는 이유는 무엇입니까? 크롬과 파이어 폭스에서 잘 작동합니다.

저는 웹 디자인을 처음 접했고 누군가가이 문제를 해결할 수 있다면 기쁠 것입니다.

enter code here 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script type="text/javascript"> 
<!-- 
function showmenu(elmnt) 
{ 
document.getElementById(elmnt).style.visibility="visible"; 
} 
function hidemenu(elmnt) 
{ 
document.getElementById(elmnt).style.visibility="hidden"; 
} 
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];} 
} 
//--> 
</script> 

<style type="text/css"> 
<!-- 

body{;margin-top: 2px;} 
a{color:#FFF;text-decoration:none;font:Tahoma, Geneva, sans-serif} 
a:hover{color:#FFF} 
td.menu{background:#F90; text-align:center;} 
table.menu 
{ 
    width:inherit; 
font-size:100%; 
position:absolute; 
visibility:hidden; 
} 
--> 
</style></head> 

<body onload="MM_preloadImages('EXCELNET/Home2.png','EXCELNET/About2.png','EXCELNET/Services2.png','EXCELNET/Products2.png','EXCELNET/Contactus2.png','EXCELNET/websms2.png','Pictures/Home2.png','Pictures/About2.png','Pictures/Services2.png','Pictures/Products2.png','Pictures/Contact2.png','Pictures/websms2.png')"> 
<table border="0" align="center" cellpadding="0" cellspacing="0"> 
    <tr> 
    <td colspan="2"></td> 
    </tr> 
    <tr> 
    <td align="center" valign="top"><table border="0" align="center" cellpadding="0" cellspacing="0"> 
     <tr> 
     <td height="2" colspan="7"></td> 
     </tr> 
     <tr> 
     <td><img src="Pictures/Excelnet Logo.png" width="72" height="25" /></td> 
     <td><a href="Home.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('2','','Pictures/Home2.png',1)"><img src="Pictures/Home1.png" name="2" width="140" height="25" border="0" id="2" /></a></td> 
     <td><a href="About.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('3','','Pictures/About2.png',1)"><img src="Pictures/About1.png" name="3" width="140" height="25" border="0" id="3" /></a></td> 
     <td width="140" onmouseover="showmenu('services')" onmouseout="hidemenu('services')"><a href="Services.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('4','','Pictures/Services2.png',1)"><img src="Pictures/Services1.png" name="4" width="140" height="25" border="0" id="4" /></a><br> 
     <table class="menu" id="services" width="120"> 
    <tr><td class="menu"><a href="/html/default.asp">HTML</a></td></tr> 
    <tr><td class="menu"><a href="/css/default.asp">CSS</a></td></tr> 
    <tr><td class="menu"><a href="/xml/default.asp">XML</a></td></tr> 
    <tr><td class="menu"><a href="/xsl/default.asp">XSL</a></td></tr> 
    </table> 
    </td> 
     <td><a href="Products.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('5','','Pictures/Products2.png',1)"><img src="Pictures/Products1.png" name="5" width="140" height="25" border="0" id="5" /></a></td> 
     <td><a href="Contacts.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('6','','Pictures/Contact2.png',1)"><img src="Pictures/Contact1.png" name="6" width="140" height="25" border="0" id="6" /></a></td> 
     <td><a href="#" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('8','','Pictures/websms2.png',1)"><img src="Pictures/websms1.png" name="8" width="140" height="25" border="0" id="8" /></a></td> 
     </tr> 
    </table></td> 
    <td rowspan="3" align="center" valign="top">&nbsp;</td> 
    </tr> 
    <tr> 
    <td height="5" align="center" valign="top"></td> 
    </tr> 
    <tr> 
    <td align="center" valign="top"><img src="Pictures/Desktop Computer2.jpg" alt="" width="870" height="379" /></td> 
    </tr> 
    <tr> 
    <td height="5" colspan="2"></td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td><table width="865" border="0" align="center" cellpadding="0" cellspacing="0"> 
    <tr> 
    <td align="center"><font face="Verdana, Geneva, sans-serif" color="#F37214" size="2pt">&copy;2012 EXCELNET SYSTEM</font> &nbsp;&nbsp;&nbsp;<font face="Verdana, Geneva, sans-serif" color="#F37214" size="2pt">|</font> &nbsp;&nbsp;<font face="Verdana, Geneva, sans-serif" color="#F37214" size="2pt">Terms & Conditions </font>&nbsp;&nbsp;<font face="Verdana, Geneva, sans-serif" color="#F37214" size="2pt">|</font> &nbsp;&nbsp;<font face="Verdana, Geneva, sans-serif" color="#F37214" size="2pt">About </font>&nbsp;&nbsp;<font face="Verdana, Geneva, sans-serif" color="#F37214" size="2pt">|</font> &nbsp;&nbsp;<font face="Verdana, Geneva, sans-serif" color="#F37214" size="2pt">Contacts </font>&nbsp;&nbsp;<font face="Verdana, Geneva, sans-serif" color="#F37214" size="2pt">| </font>&nbsp;&nbsp;<font face="Verdana, Geneva, sans-serif" color="#F37214" size="2pt">Feedback</font></td> 
    </tr> 
</table></td> 
    <td>&nbsp;</td> 
    </tr> 
</table> 
</body> 
</html> 
+0

이 코드를 사용하면 모든 이미지 위치가 깨져서 해결하기 어려울 수 있습니다. [jsFiddle] (http://jsfiddle.net)에서 실제 예제를 만들 수 있습니까? – andyb

+1

이러한 MM_ 루틴은 어두운 나이부터 나옵니다 (Netscape 4와 IE 4를 명시 적으로 지원하며 두 브라우저 모두 브라우저가 얻을 수있는 것처럼 작동하지 않습니다). 모든 것을 버리고 현대적인 코딩 표준으로 시작하는 것이 좋습니다. – Quentin

+0

Dreamweaver는 스크립트를 삭제하고 페이지를 편집하려고하면 스크립트를 다시 저장합니까? @Quentin과 동의하십시오 ... 현대적인 대안을 사용해보십시오. – Amitd

답변

0

문제는 ID 속성에 숫자 값을 사용했기 때문입니다. 편지를 앞에 붙이면 롤오버가 작동합니다. 다음은 HTML ID 속성에 대한 추가 정보입니다. https://stackoverflow.com/a/79022/1622684

+0

IE가 위의 규칙을 따르는 반면 Chrome && FF는 그렇지 않습니다. 또는 후자의 두 문장에 대해 해당 문장이 유효하지 않습니까? – Amitd

+1

@Amitd는 아주 오래된 것입니다. IE의 경우 DOM 요소는 document.getElementById()를 통해 검색되는 것이 아니라 document.all 컬렉션을 사용하여 참조됩니다. 따라서 document.all [id]는 해당 색인의 요소를 확인합니다. – robC

+0

아 .. 고맙습니다. x = d [n] 및 x = d.all [n]도 같은 요소를 평가합니까? – Amitd

-1

Pls는이 시도 .. 줄 ~ 약 28

상기 함수 MM_findObj에서 (N, d)

있는 라인

if(!(x=d[n])&&d.all) x=d.all[n]; 

대체

if(!(d[n])&&d.all) x=d.all[n]; 

이렇게하면 모든 브라우저에서 작동해야합니다.
나에게 오타가 잘못 들었습니다.
그렇지 않은 경우 이상합니다.

+0

아니요. if 문에서 할당을 수행하는 것이 종종 빈약 한 코드 스타일로 간주되지만 구문 적으로 유효합니다. 이 경우 IE4 특정 코드를 시도하기 전에 DOM 0을 통해 값을 가져 오려고합니다. – Quentin

+0

또한이 코드는 Dreamweaver에서 생성되므로 오타가 될 가능성은 거의 없습니다. MM_ 접두사는 Macromedia의 시초입니다. – robC

관련 문제