Asterix-Ac
Erfahrenes Mitglied
Hallo zusammen,
ich bastle gerade an einem Menü, dass sich in einem Frameset über 2 Frames verteilt. z.B. habe ich 'Kontakt' und 'Über mich' im Fuss der Seite untergebracht.
Das Script kann 3 Button-Zustände: onMouseOut, onMouseOver und onClick(also ausgewählter Button).
Ich lade das JavaScript im Kopf- und im Fussmenü parallel.Also auch alle anderen Menüpunkte, die es im jeweils nur im anderen Frame gibt. Das einzige, was ich weglasse, ist der img-Tag.
Wenn ich nun mit der Maus über einen Button fahre, egal ob Fuss oder Kopf, hat er immer eine null/undefined Referenz im jeweils anderen Frame. Im eigenen Frame funktioniert es tadellos.
Ich poste mal mein Script zum Testen.
Achja, stört Euch bitte nicht am PHP, was da noch mit drin ist.
Schonmal Danke im Vorraus.
overengine.js:
kopf.html
ich habe noch weitere if-Abfragen bis 'graphic[5]' eingebaut - wäre aber hier zu lang.
und in fuss.html habe ich das Gleiche wie in kopf.html mit graphic[6/7].
Ich hoffe, jemand wird daraus schlau. Falls nicht, bitte kurz zurückposten, versuche es dann nochmal zu erklären.
Asterix
ich bastle gerade an einem Menü, dass sich in einem Frameset über 2 Frames verteilt. z.B. habe ich 'Kontakt' und 'Über mich' im Fuss der Seite untergebracht.
Das Script kann 3 Button-Zustände: onMouseOut, onMouseOver und onClick(also ausgewählter Button).
Ich lade das JavaScript im Kopf- und im Fussmenü parallel.Also auch alle anderen Menüpunkte, die es im jeweils nur im anderen Frame gibt. Das einzige, was ich weglasse, ist der img-Tag.
Wenn ich nun mit der Maus über einen Button fahre, egal ob Fuss oder Kopf, hat er immer eine null/undefined Referenz im jeweils anderen Frame. Im eigenen Frame funktioniert es tadellos.
Ich poste mal mein Script zum Testen.
Achja, stört Euch bitte nicht am PHP, was da noch mit drin ist.
Schonmal Danke im Vorraus.
overengine.js:
Code:
var totalGraphics=0;
var graphic = new Array();
function tocGraphic (width, height, name, statusText, link) {
this.height = height;
this.width = width;
this.name = name;
this.link = link;
this.off = new Image (width, height);
this.off.src = imageSubdirectory + imagePrefix + name + offSuffix;
this.offname = imageSubdirectory + imagePrefix + name + offSuffix;
if (link != "") {
this.on = new Image (width, height);
this.on.src = imageSubdirectory + imagePrefix + name + onSuffix;
this.pick = new Image (width, height);
this.pick.src = imageSubdirectory + imagePrefix + name + pickSuffix;
this.statusText = statusText;
}
}
function createTocGraphic (width, height, name, statusText, link) {
graphic[totalGraphics] = new tocGraphic(width, height, name, statusText, link);
totalGraphics++;
}
function doClick (num) {
document.images[graphic[num].name].src = graphic[num].pick.src;
if (num != picked) {
document.images[graphic[picked].name].src = graphic[picked].off.src;
}
picked = num;
parent.navioben.location.href='navioben.php?wo='+graphic[num].name;
alert(picked+","+highlighted+","+num+","+opFrame+",Click");
}
function doMouseOver(num,name) {
alert(opFrame+num);
if (num != picked) {
alert("in num != picked");
/*-------->hier tritt immer der Fehler auf*/ document.images[graphic[num].name].src = graphic[num].on.src;
}
alert("num != picked");
if (highlighted != picked && highlighted != num) {
document.images[graphic[highlighted].name].src = graphic[highlighted].off.src;
}
alert("highlighted != picked && highlighted != num");
highlighted = num;
alert("highlighted = num;");
self.status = graphic[num].statusText;
alert(picked+","+highlighted+","+num+",doMouseOver,"+opFrame);
}
function doMouseOut (num) {
if (highlighted != picked) {
document.images[graphic[highlighted].name].src = graphic[highlighted].off.src;
}
self.status = '';
//alert(picked+","+highlighted+","+num+",doMouseOut,"+opFrame);
}
function doOnLoad (num) {
currentPage = parent.frames[frameTarget].location.href;
for (i = 1; i < totalGraphics; i++) {
if (currentPage.indexOf(graphic[i].name) > 0) {
doClick(i);
return(1);
}
}
if (i >= totalGraphics) {
doClick(num);
}
alert(picked+","+highlighted+","+num+","+opFrame+",Load");
return(-1);
}
<?
if($from == "head") {
echo"var frameTarget = \"Seitenindex\";";
}
else if($from == "foot") {
echo"var frameTarget = \"Haupt\";";
}
?>
var opFrame = "<?echo$from;?>";
var navTarget = "navioben";
var navFile = "navioben.php";
var picked=0;
var highlighted=0;
imageSubdirectory = "<?echo$mnu_folder;?>/";
imagePrefix = "mnu.";
offSuffix = ".nor.<?echo$format;?>";
onSuffix = ".up.<?echo$format;?>";
pickSuffix = ".pic.<?echo$format;?>";
kopf.html
Code:
createTocGraphic(112, 30, \"startseite\", \"Startseite\", \"sindex.php?cat=0&nav=".$nav."&scw=".$scw."\");\r
createTocGraphic(112, 30, \"produkte\", \"Produkte\", \"sindex.php?cat=1&nav=".$nav."&scw=".$scw."\");\r
createTocGraphic(112, 30, \"dienstleistungen\", \"Dienstleisungen\", \"sindex.php?cat=2&nav=".$nav."&scw=".$scw."\");\r
createTocGraphic(112, 30, \"download\", \"Download\", \"sindex.php?cat=3&nav=".$nav."&scw=".$scw."\");\r
createTocGraphic(112, 30, \"forum\", \"Forum\", \"sindex.php?cat=4&nav=".$nav."&scw=".$scw."\");\r
createTocGraphic(112, 30, \"leer\", \"leer\", \"\");\r
createTocGraphic(112, 30, \"kontakt\", \"Kontakt\", \"main.php?cat=0&nav=".$nav."&scw=".$scw."\");\r
createTocGraphic(112, 30, \"ueber_mich\", \"über mich\", \"main.php?cat=1&nav=".$nav."&scw=".$scw."\");\r
with (document) {
open ('text/html');
if (graphic[0].link != \"\") {
write ('<span style=\"position:absolute;top:14px;left:180px;\"><A TARGET=\"' + frameTarget + '\" HREF=\"' + graphic[0].link + '\" onMouseOver=\"doMouseOver(0);parent.frames.fuss.doMouseOver(0); return true;\" onMouseOut=\"doMouseOut(0);parent.frames.fuss.doMouseOut(0);return true;\" onClick=\"doClick(0);parent.frames.fuss.doClick(0);return true;parent.frames.'+frameTarget+'.focus();parent.'+navTarget+'.location.href=\''+navFile+'?wo='+graphic[0].name+'\'\">');
write ('<IMG NAME=\"' + graphic[0].name + '\" SRC=\"' + graphic[0].offname + '\" BORDER=0></a></span>');
}
else {
write ('<span style=\"position:absolute;top:14px;left:180px;\"><IMG SRC=\"' + graphic[0].offname + '\" ALT=\"' + graphic[0].name + '\" BORDER=0></span>');
}
und in fuss.html habe ich das Gleiche wie in kopf.html mit graphic[6/7].
Ich hoffe, jemand wird daraus schlau. Falls nicht, bitte kurz zurückposten, versuche es dann nochmal zu erklären.
Asterix