Avatar billede andy Nybegynder
08. oktober 2003 - 18:16 Der er 20 kommentarer og
1 løsning

Hjælp til mozilla venlig javascript

Jeg har skruet følgende stykke javascript sammen fra forskellige andre scripts.

Det virker ved at jeg har et layer med en iframe, "tradesinfo", og i denne iframe nogle anchors.

Når jeg scroller over et link på siden popper layer'et frem, scroller til det rigtige anchor, layer'et følger musen sålænge musen er over linket, og forsvinder derefter.

Altså ala <a href="link" onmouseover="showlayer('blahdomain.com')" onmousemove="movelayer()" onmouseout="hidelayer()">BLAH</a>

Mit javascript virker fint, men kun i IE. Nogen der kan hjælpe?

<script language="JavaScript" type="text/JavaScript">
<!--
function showlayer(sitedomain) {
    whichLayer = "Layer1";

    y = parseInt(frames('tradesinfo').document.getElementById(sitedomain).offsetTop);
    frames('tradesinfo').window.scrollTo(0,y);
    document.getElementById(whichLayer).style.visibility = "visible";
}

function hidelayer() {
    whichLayer = "Layer1";
    document.getElementById(whichLayer).style.visibility = "hidden";
}
function movelayer() {
    var whichLayer = "Layer1";
    document.all[whichLayer].style.left = event.clientX+50+document.body.scrollLeft;
    document.all[whichLayer].style.top= event.clientY-20+document.body.scrollTop;
}
//-->
</script>
Avatar billede erikjacobsen Ekspert
08. oktober 2003 - 18:19 #1
Udskift i hvert fald din brug af .all med getElementById
Avatar billede andy Nybegynder
08. oktober 2003 - 18:23 #2
ah, tak.

Nu får jeg:
Error: event is not defined
Avatar billede erikjacobsen Ekspert
08. oktober 2003 - 18:27 #3
Åh, ja, der er noget med eventmodellen. Jeg stopper - jeg er ikke ekspert
længere... Der kommer nok nogle andre!
Avatar billede =maddog= Nybegynder
08. oktober 2003 - 18:39 #4
function movelayer(e) {
    if(e)event=e;
    var whichLayer = "Layer1";
    document.all[whichLayer].style.left = event.clientX+50+document.body.scrollLeft;
    document.all[whichLayer].style.top= event.clientY-20+document.body.scrollTop;
}
Avatar billede =maddog= Nybegynder
08. oktober 2003 - 18:40 #5
function movelayer(e) {
    if(e)event=e;
    var whichLayer = "Layer1";
    document.getElementById(whichLayer).style.left = event.clientX+50+document.body.scrollLeft;
    document.getElementById(whichLayer).style.top= event.clientY-20+document.body.scrollTop;
}

sorry lavede en copy/paste..
Avatar billede andy Nybegynder
08. oktober 2003 - 20:31 #6
Tak for dit svar maddog.

Jeg har fået det til at virke i både IE og Mozilla nu:
<script language="JavaScript" type="text/JavaScript">
<!--

if (navigator.appVersion.indexOf("MSIE") != -1) { var IE = true; }
else { var IE = false; }

var pageX=0;
var pageY=0;
function showlayer(sitedomain) {
    whichLayer = "Layer1";
   
    if (IE) {
        y = parseInt(frames('tradesinfo').document.getElementById(sitedomain).offsetTop);
        frames('tradesinfo').window.scrollTo(0,y);
    }
    else {
        y = parseInt(top.tradesinfo.document.anchors[sitedomain].offsetTop);
        top.tradesinfo.window.scrollTo(0,y);
    }
    document.getElementById(whichLayer).style.visibility = "visible";
}

function hidelayer() {
    whichLayer = "Layer1";
    document.getElementById(whichLayer).style.visibility = "hidden";
}
function movelayer() {
    var whichLayer = "Layer1";
   
    if (IE) {
        document.all[whichLayer].style.left = event.clientX+50+document.body.scrollLeft;
        document.all[whichLayer].style.top= event.clientY-20+document.body.scrollTop;
    }
    else {
        document.getElementById(whichLayer).style.left = pageX+50;
        document.getElementById(whichLayer).style.top= pageY+10;
    }
}
function my_test(event) {
    pageX = event.pageX;
    pageY = event.pageY;
}

if (!IE) { window.onmousemove=my_test; }
//-->
</script>

Problemet er dog at jeg normalt kører med en lille top frame, også virker "top.tradesinfo" ikke. Hvad skal jeg så bruge?
Avatar billede olebole Juniormester
09. oktober 2003 - 02:21 #7
<ole>

Du må kalde din top-frame 'ib', 'gudrun', 'wolfgang_maximillian_herberth_van_der_scwandvogel_III', eller hvad du nu vil ... bare ikke 'top'  :)

'top' er et reserveret ord i JavaScript - og refererer til det øverste window-object i hierakiet.
I tilfælde af et frameset, vil det sige: Det yderste frameset i frames-hierakiet.

/mvh
</bole>
Avatar billede olebole Juniormester
09. oktober 2003 - 02:23 #8
... prøv evt. at skrive:
  <a href="#" onclick="top.location.href='http://www.google.dk'">TEST</a>

Så kan du se, hvad jeg mener  ;o)
/mvh
Avatar billede andy Nybegynder
09. oktober 2003 - 20:54 #9
yes yes I know :)

Jeg er ligeglad med min topframe. Der skal ikke ske noget med den. Det er i min main frame hvor layer'et og iframen ligger. Hvordan refererer jeg til min iframe korrekt? "top.tradesinfo" eller "parent.tradesinfo" virker fint uden min topframe..
Avatar billede olebole Juniormester
09. oktober 2003 - 21:55 #10
Det er ikke til at sige noget begavet om, før vi ved, hvorfra kaldet kommer - og hvordan dit hieraki ser ud.
Prøv med en URL til siden, så kan vi skkert skrumpe en laaaaang snak ind til en ganske kort anvisning  :)
/mvh
Avatar billede =maddog= Nybegynder
09. oktober 2003 - 21:59 #11
man bør heller ikke bruge reservede variable som id i IE, pga document.all fadæsen.
Avatar billede olebole Juniormester
09. oktober 2003 - 22:15 #12
;o)
Avatar billede andy Nybegynder
10. oktober 2003 - 23:22 #13
http://www.andreasgehrke.com/exp/ virker i IE, men ikke i Mozilla
http://www.andreasgehrke.com/exp/main.htm virker i begge browsere.

Som sagt ligger fejlen i "top.tradesinfo". Hvad skal jeg bruge i stedet?
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 23:26 #14
Har du en ramme, der hedder tradesinfo?

Error: top.tradesinfo has no properties
Source File: http://www.andreasgehrke.com/exp/main.htm
Line: 22
Avatar billede andy Nybegynder
10. oktober 2003 - 23:32 #15
ja, det er min iframe
Avatar billede olebole Juniormester
10. oktober 2003 - 23:57 #16
Prøv:
  frames.tradesinfo.location.href = "en_fil.html";
/mvh
Avatar billede olebole Juniormester
11. oktober 2003 - 00:00 #17
Det var adressen til frame'en ... hvad du vil lave i den, forstår jeg til gengæld ikke rigtig - men det kan du vel selv finde ud af, når du ved, hvordan du får fat i window-object'et  :)
/mvh
Avatar billede andy Nybegynder
11. oktober 2003 - 00:05 #18
great ole! Det virker. tak! Smid lige et svar allesammen :)
Avatar billede erikjacobsen Ekspert
11. oktober 2003 - 00:12 #19
top.hvadvardetnunavnetpåhovedrammenvar.tradesinfo.....  ville måsk også virke
Avatar billede olebole Juniormester
11. oktober 2003 - 00:34 #20
ja.det.er.slet.ikke.umuligt.erik...tv\346rtimod.skal.du.se  ;o)
Avatar billede andy Nybegynder
11. oktober 2003 - 00:41 #21
oki.og.god.ferie :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester