Quelltext an IE und NN anpassen für Bildwechsel
Andreas Kepler
- javascript
Hallo Forumsmitglieder
Ich habe meine Homepage mit Photoshop gestaltet und wollte sie nun in zwei Frames teilen. Einer soll die Navigation beinhalten, der andere erweiterte Navigationselemente, die beim Aufruf eines bestimmten Buttons geladen werden sollen. Dabei hat mir Photoshop den folgenden Javascript-Quelltext geliefert, der auch soweit ganz gut funktioniert. Da ich aber über zwei Frames hinaus arbeiten will, weiss ich nicht, wie ich den Quelltext anpassen muss.
<script type="text/javascript">
<!--
userAgent = window.navigator.userAgent;
browserVers = parseInt(userAgent.charAt(userAgent.indexOf("/")+1),10);
function newImage(arg) {
if (document.images) {
rslt = new Image();
rslt.src = arg;
return rslt;
}
}
function findElement(n,ly) {
if (browserVers < 4) return document[n];
var curDoc = ly ? ly.document : document;
var elem = curDoc[n];
if (!elem) {
for (var i=0;i<curDoc.layers.length;i++) {
elem = findElement(n,curDoc.layers[i]);
if (elem) return elem;
}
}
return elem;
}
function changeImages() {
if (document.images && (preloadFlag == true)) {
var img;
for (var i=0; i<changeImages.arguments.length; i+=2) {
img = null;
if (document.layers) {
img = findElement(changeImages.arguments[i],0);
}
else {
img = document.images[changeImages.arguments[i]];
}
if (img) {
img.src = changeImages.arguments[i+1];
}
}
}
}
var preloadFlag = false;
function preloadImages() {
if (document.images) {
bild_9_click = newImage("images/bild_9_click.jpg");
bild_9_click011 = newImage("images/bild_9_click-11.jpg");
bild_9_click012 = newImage("images/bild_9_click-12.jpg");
bild_11_click = newImage("images/bild_11_click.jpg");
bild_11_click016 = newImage("images/bild_11_click-16.jpg");
bild_11_click017 = newImage("images/bild_11_click-17.jpg");
bild_13_click = newImage("images/bild_13_click.jpg");
bild_13_click021 = newImage("images/bild_13_click-21.jpg");
bild_17_click = newImage("images/bild_17_click.jpg");
bild_17_click027 = newImage("images/bild_17_click-27.jpg");
bild_17_click028 = newImage("images/bild_17_click-28.jpg");
bild_20_over = newImage("images/bild_20_over.jpg");
bild_20_over033 = newImage("images/bild_20_over-33.jpg");
bild_23_click = newImage("images/bild_23_click.jpg");
bild_23_click038 = newImage("images/bild_23_click-38.jpg");
bild_23_click039 = newImage("images/bild_23_click-39.jpg");
bild_25_click = newImage("images/bild_25_click.jpg");
bild_25_click043 = newImage("images/bild_25_click-43.jpg");
bild_25_click044 = newImage("images/bild_25_click-44.jpg");
bild_27_click = newImage("images/bild_27_click.jpg");
bild_27_click048 = newImage("images/bild_27_click-48.jpg");
bild_36_over = newImage("images/bild_36_over.jpg");
bild_38_over = newImage("images/bild_38_over.jpg");
bild_40_over = newImage("images/bild_40_over.jpg");
bild_42_over = newImage("images/bild_42_over.jpg");
bild_44_over = newImage("images/bild_44_over.jpg");
bild_46_over = newImage("images/bild_46_over.jpg");
preloadFlag = true;
}
}
// -->
</script>
Der Aufruf des Scripts erfolgt auf folgende Art (Beispiel):
<div id="bild-38">
<a href="#" onmouseover="changeImages('bild_38', 'images/bild_38_over.jpg'); return true;"
onmouseout="changeImages('bild_38', 'images/bild_38.jpg'); return true;"
onclick="changeImages('bild_9', 'images/bild_9_click-11.jpg', 'bild_11', 'images/bild_11_click-16.jpg', 'bild_13', 'images/bild_13_click.jpg', 'bild_17', 'images/bild_17_click-27.jpg', 'bild_23', 'images/bild_23_click-38.jpg', 'bild_25', 'images/bild_25_click-43.jpg', 'bild_27', 'images/bild_27_click.jpg');">
<img name="bild_38" src="images/bild_38.jpg" width="140" height="16" border="0" alt="" /></a>
</div>
Also ich will nun, dass der Aufruf wie hier im Navigations-Frame steht und die Bilder im Kopf-Frame ausgetauscht werden. Bei meinen Versuchen wollte jedesmal NN nicht mehr mitmachen. Vielleicht weiss jemand hier, wie man diesen Aufruf umschreiben kann, damit sowohl IE als auch NN das korrekt interpretieren können.
Vielen Dank für eure Hilfe
Gruss Andreas Kepler
Hi,
du musst die Images nur in dem anderen Frame suchen. Nicht im aktuellen Frame!
Also musst du was an der Funktion findElement ändern:
function findElement(n,ly) {
var meinFrame = parent.frames[0];
if (browserVers < 4) return meinFrame.document[n];
var curDoc = ly ? ly.document : meinFrame.document;
var elem = curDoc[n];
if (!elem) {
for (var i=0;i<curDoc.layers.length;i++) {
elem = findElement(n,curDoc.layers[i]);
if (elem) return elem;
}
}
return elem;
}
du musst nur das richtige Frame finden, da wo die Bilder drin sind, die getauscht werden sollen! Und zwar relativ zu dem Frame, die die Events auslösen!
var meinFrame = parent.frames[0];
war mal so eine ungefähre Struktur wie das Aussehen könnte! Alles weitere in SElfhTML
Allerdings weiß ich nicht, ob das deine Probleme löst!
Gruß
Christian