Ga naar inhoud

Javascript: pop-up menu ie & netscape


anoniem

Aanbevolen berichten

Ik gebruik voor m'n site een menu die omgebouwd is vanaf deze: http://www.geocities.com/peetabix/scripts/hddmenu.html Ik gebruik specifiek dit menu omdat het niet zoals vele andere pup-up menu's 'over de pagina' heen wordt gezet, maar er echt in (de popup's worden er natuurlijk wel overheen gezet). Het probleem van die menu is dat het in Netscape niet werkt. Weet iemand of het makkelijk is om dit menu te verbeteren zodat hij het ook in Netscape doet? En zoja: hoe dan... ? :smile: bvd, Elja
Link naar reactie
[quote:dd2707040a] Op 06-02-2002 15:20, schreef Elja Trum:[b:dd2707040a] Weet iemand of het makkelijk is om dit menu te verbeteren zodat hij het ook in Netscape doet? En zoja: hoe dan... ? :smile:[/b:dd2707040a][/quote:dd2707040a] Als je de code begrijpt is het niet zo moeilijk, hooguit wat veel werk. Het script maakt namelijk gebruik van layers en die worden (helaas) per browser anders geïnterpreteerd maar vooral anders aangesproken. Nu is er een slimme Rus die een JavaScript-library heeft geschreven om layers aan te spreken. Het hoe en wat staat op zijn site, te vinden op http://www.kruglov.ru/klayers/ Bij mij werkt het scripje van Kruglov perfect. Succes ermee! :wink: - Basje.
Link naar reactie
Bedankt voor dat scriptje van Kruglov, Bas. Dat heeft me aardig op weg geholpen. Ik heb zowel dat scriptje geprobeerd als een eigen knutselwerkje aan de hand ervan, mara bij beide houd ik hetzelfde probleem. In IE doet ie het prima, maar in Netscape (6.0) zet ie de layer op de verkeerde plaats neer. Namelijk linksboven in de hoek. Hij moet net iets naar rechts staan en, afhankelijk van in welk menu je zit, wat meer naar beneden. De huidige code die ik gebruik is: [code:1:8e71812c91] function showmenu(elmnt) { if (document.getElementById && document.getElementById(elmnt) != null) node = document.getElementById(elmnt).style.visibility='visible'; else if (document.layers && document.layers[object] != null) document.layers[elmnt].visibility = 'visible'; else if (document.all) document.all[elmnt].style.zIndex = 100; document.all[elmnt].style.visibility = 'visible'; } function hidemenu(elmnt) { if (document.getElementById && document.getElementById(elmnt) != null) node = document.getElementById(elmnt).style.visibility='hidden'; else if (document.layers && document.layers[elmnt] != null) document.layers[elmnt].visibility = 'hidden'; else if (document.all) document.all[elmnt].style.visibility = 'hidden'; } [/code:1:8e71812c91] Nu heb ik geprobeerd om met document.layers[elmnt].left = 40 'm te verplaatsen, maar dit zorgt ervoor dat de hele code niet meer werkt in Netscape. Weet iemand hier de oplossing voor? bvd, Elja
Link naar reactie
Ik zie toch een aantal rare dingetjes in je script... node = document.getElementById(elmnt).style.visibility='visible'; waarom sla je de uitkomst hier op in de variabele 'node'? else if (document.all) document.all[elmnt].style.zIndex = 100; document.all[elmnt].style.visibility = 'visible'; Na de 'else if' zet je 2 statements, zonder brackets. De 2e statement wordt dus altijd uitgevoerd.. Ik weet niet of dat het effect in ns6 verklaart, maar goed... Oh en voor de goede orde.. NS[b:37a8d0458e]6[/b:37a8d0458e] maakt geen gebruik van de document.layer tak, maar die van document.getElementById
Link naar reactie
Tja, dat krijg je dus als je code zomaar ript van andere pagina's.. :smile: Dit zou al beter moeten zijn dan: [code:1:c27c23df08] function showmenu(elmnt) { if (document.getElementById && document.getElementById(elmnt) != null) document.getElementById(elmnt).style.visibility='visible'; else if (document.layers && document.layers[object] != null) document.layers[elmnt].visibility = 'visible'; else if (document.all) { document.all[elmnt].style.zIndex = 100; document.all[elmnt].style.visibility = 'visible'; } } function hidemenu(elmnt) { if (document.getElementById && document.getElementById(elmnt) != null) document.getElementById(elmnt).style.visibility='hidden'; else if (document.layers && document.layers[elmnt] != null) document.layers[elmnt].visibility = 'hidden'; else if (document.all) document.all[elmnt].style.visibility = 'hidden'; } [/code:1:c27c23df08] Helaas verandert dit niks aan de verkeerde positie in netscpae (links-boven). In de style tag is de table die zichtbaar wordt met dit script zo beschreven: [code:1:c27c23df08] table.menu { background:black; position:absolute; left=134; visibility:hidden; zIndex:0; } [/code:1:c27c23df08] Moet ik hierin nog iets veranderen om dit in netscape werkend te krijgen ? Elja
Link naar reactie
Misschien struikelt netscape over de niet bestaande zIndex:0; zIndex is de javascript notatie, in css heet dat z-index.. Of anders over left[b:31a273f480]=[/b:31a273f480]134; ipv left[b:31a273f480]:[/b:31a273f480]134[b:31a273f480]px[/b:31a273f480]. Netscape houdt van een [i:31a273f480]goede[/i:31a273f480] notatie, dus ook de eenheden horen erbij. Kijk je scripts goed na op dit soort foutjes!
Link naar reactie
Ik heb nu een variant geprobeerd voor de getElementById die Netscape 6 dus moet gebruiken: [code:1:b8e8ccc502] if (document.getElementById && document.getElementById(elmnt) != null) { document.getElementById(elmnt).style.visibility='visible'; document.getElementById(elmnt).style.top = '400px'; } [/code:1:b8e8ccc502] En het enige effect is dat het menu in IE6 400 pixels lager komt te staan. Bij Netscape 6 blijft ie nogsteeds linksboven staan :sad:
Link naar reactie
Thx Jurriaan! Ik kom steeds dichter in de buurt. :smile: Door die z-index te veranderen en de left:134px zet netscape 'm nu ook op de juiste plaatst horizontaal. Nu moet ik 'm alleen verticaal nog op de juiste plaatst krijgen. Ik ga ff kijken of ik de pagina ergens online kan zetten. Misschien wil iemand er dan even naar kijken.. Elja [edit]top: ipv left: geschreven..[/edit] [ Dit Bericht is bewerkt door: Elja Trum op 2002-02-07 11:37 ]
Link naar reactie
Oke, ik heb een anagepaste pagina hier geplaatst: http://www.mydiary.nl/temp/test.htm Het is normaal een asp pagina, vandara dat ie er nu ook niet uitziet :smile: Maarhet gata dus even om het menu. In IE doet ie het goed, in NS6 gaat het mis. Als iemand de pagina zou willen bekijken en me zou kunnen helpen zou ik dat erg op prijs stellen.. bvd, Elja
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...