URL: https://www.overclockers.at/coding-stuff/javascript_mouseover_problem_macos_9_x_ie5_132083/page_1 - zur Vollversion wechseln!
Hallo,
habe ein Problem mit dem Internet Explorer 5.x auf Macintosh Rechnern (OS Version 9.x). Bekomme mein mouseover Script nicht zum Laufen.
Hier das Script:
Code: PHP<script type="text/javascript"> var main = new Array; var stattxt = new Array; main.push("bilder/navigation/navi_site1"); stattxt.push("Site1"); main.push("bilder/navigation/navi_site2"); stattxt.push("Site2"); main.push("bilder/navigation/navi_site3"); stattxt.push("Site3"); ... var out = new Array(main.length); var over = new Array(main.length); var loaded = false; function doPreload() { for (i=0; i<main.length; i++) { out[i]= new Image(); out[i].src= main[i]+'_12.gif'; over[i]= new Image(); over[i].src= main[i]+'_12_r.gif'; } loaded=true; } function mouseOver(name,nr) { if(loaded) { document.images[name].src = over[nr].src; } window.status = name; } function mouseOut(name,nr) { if(loaded) { document.images[name].src = out[nr].src; } window.status = ''; } </script>
Code: PHP<body onload="doPreload();">
Code: PHP<tr><td><a href="..." onmouseover="mouseOver('Site1', 1);return true" onmouseout="mouseOut('Site1', 1);return true"><img src="..." alt="..." name="..." title="..."></a></td></tr>
use CSS.
1) ".push()" ist schlecht weil IE 5.0 das nicht kann, JS error und kein JS code geht mehr g'scheit auf deiner Seite. Besser meinarray[meinarray.length] = 'string'; , selber Effekt. Bei vielen Stats ist 5.0 leider immer noch vor 5.5; YMMV.
2) geht alert(document.images) unter IE Mac? Geht document.images['Site1'] ? oder kommt undefined zurueck? Ein bischen selber Initiative ergreifen, also alert() statements reinhauen damit du weisst wie weit er kommt im JS.
3) Verwende seit einiger Zeit folgenden Code erfolgreich:
Code: PHPfunction PreloadImages(listImages) { if (document.images) { if (!document.Preload) { document.Preload = []; } for (var i = 0, j = document.Preload.length, li = listImages.length; i < li; i++) { document.Preload[j] = new Image; document.Preload[j++].src = listImages[i]; } } } function AutoHover(preload) { if (!document.getElementsByTagName) { return; } var imgs = document.getElementsByTagName('img'); var i, l = imgs.length; var j, m; var reSwapme = /autoswap|auto-swap/; var reIsActive = /_a\.[a-z]+/; var reFileParts = /(.*)\.([a-z]+$)/; var srcParts; var listImages = []; for (i = 0; i < l; i++) { if (reSwapme.test(imgs[i].className) && !reIsActive.test(imgs[i].src)) { srcParts = imgs[i].src.match(reFileParts) imgs[i]._srcNormal = imgs[i].src; imgs[i]._srcActive = srcParts[1] + '_a.' + srcParts[2]; listImages[listImages.length] = imgs[i]._srcActive; imgs[i].onmouseover = function() { this.src = this._srcActive; } imgs[i].onmouseout = function() { this.src = this._srcNormal; } } } // Zusatzeinbau: Auch Images für Submit Buttons berücksichtigen. var inputs = document.getElementsByTagName('input'); l = inputs.length; for (i = 0; i < l; i++) { if (reSwapme.test(inputs[i].className) && !reIsActive.test(inputs[i].src)) { srcParts = inputs[i].src.match(reFileParts) inputs[i]._srcNormal = inputs[i].src; inputs[i]._srcActive = srcParts[1] + '_a.' + srcParts[2]; listImages[listImages.length] = inputs[i]._srcActive; inputs[i].onmouseover = function() { this.src = this._srcActive; } inputs[i].onmouseout = function() { this.src = this._srcNormal; } } } if (preload) { PreloadImages(listImages); } }
wow, danke für die umfangreiche Antwort!
Komm erst morgen dazu, das auszuprobieren, poste dann das Resultat.
Schönen Abend noch!
Hallo,
ja durch das Ersetzen des der push()-Methode gehts jetzt.
danke!
Ah, interessant. Kann der Mac IE 5 also auch nicht? Jetzt muss ich direkt mal checken ob der JS Prorotypen kann, der IE 5.0 glaub ich kanns ja ...
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026