Toon posts:

[JS] Drop-down menu 'herstart' niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste tweakers,

Op dit moment ben ik bezig met het vervangen van een oud statisch menu in een website, voor een nieuw drop-down JS menu. Daarvoor maak ik dankbaar gebruik van dit script wat ik inmiddels al naar mijn wensen heb aangepast. Het menu draait in een frame, maar dat geeft geen problemen. Links openen netjes in het frame wat ik heb aangegeven en het menu klapt uit over de andere frames. Echter wanneer ik een item in het menu aan klik, blijft deze in deze staat hangen. Je ziet dan dus het eerste level, met het tweede level uitgeklapt en het betreffende item geselecteerd. En na een klik is het natuurlijk de bedoeling dat je alleen maar het eerste level ziet. Sorry voor deze waarschijnlijk relatief simpele vraag, maar ik heb echt geen JS kennis. Voor jullie een eitje dus.

Het script roep ik op de volgende manier op in het betreffende frame in de body (alles zoals uitgelegd in de betreffende readme van het script):

JavaScript:
1
2
3
4
<script type='text/javascript'>
function Go(){return}</script>
<script type='text/javascript' src='menu_advies.js'></script>
<script type='text/javascript' src='menu_com.js'></script>


menu_com.js stuurt het menu aan, menu_advies.js bevat alle eigen variabelen. En dat ziet er zo uit:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
    var NoOffFirstLineMenus=3;          // Number of first level items
    var LowBgColor='#0066FF';           // Background color when mouse is not over
    var LowSubBgColor='#0066FF';            // Background color when mouse is not over on subs
    var HighBgColor='#0099FF';          // Background color when mouse is over
    var HighSubBgColor='#0099FF';           // Background color when mouse is over on subs
    var FontLowColor='white';           // Font color when mouse is not over
    var FontSubLowColor='white';            // Font color subs when mouse is not over
    var FontHighColor='white';          // Font color when mouse is over
    var FontSubHighColor='white';           // Font color subs when mouse is over
    var BorderColor='black';            // Border color
    var BorderSubColor='black';         // Border color for subs
    var BorderWidth=1;              // Border width
    var BorderBtwnElmnts=1;         // Border between elements 1 or 0
    var FontFamily="arial,comic sans ms,technical"  // Font family menu items
    var FontSize=9;             // Font size menu items
    var FontBold=1;             // Bold menu items 1 or 0
    var FontItalic=0;               // Italic menu items 1 or 0
    var MenuTextCentered='left';            // Item text position 'left', 'center' or 'right'
    var MenuCentered='left';            // Menu horizontal position 'left', 'center' or 'right'
    var MenuVerticalCentered='top';     // Menu vertical position 'top', 'middle','bottom' or static
    var ChildOverlap=.2;                // horizontal overlap child/ parent
    var ChildVerticalOverlap=.2;            // vertical overlap child/ parent
    var StartTop=1;             // Menu offset x coordinate
    var StartLeft=1;                // Menu offset y coordinate
    var VerCorrect=0;               // Multiple frames y correction
    var HorCorrect=0;               // Multiple frames x correction
    var LeftPaddng=3;               // Left padding
    var TopPaddng=2;                // Top padding
    var FirstLineHorizontal=1;          // SET TO 1 FOR HORIZONTAL MENU, 0 FOR VERTICAL
    var MenuFramesVertical=0;           // Frames in cols or rows 1 or 0
    var DissapearDelay=500;         // delay before menu folds in
    var TakeOverBgColor=1;          // Menu frame takes over background color subitem frame
    var FirstLineFrame='topFrame1';         // Frame where first level appears
    var SecLineFrame='mainFrame';           // Frame where sub levels appear
    var DocTargetFrame='mainFrame';         // Frame where target documents appear
    var TargetLoc='';               // span id for relative positioning
    var HideTop=0;              // Hide first level when loading new document 1 or 0
    var MenuWrap=1;             // enables/ disables menu wrap 1 or 0
    var RightToLeft=0;              // enables/ disables right to left unfold 1 or 0
    var UnfoldsOnClick=0;           // Level 1 unfolds onclick/ onmouseover
    var WebMasterCheck=0;           // menu tree checking on or off 1 or 0
    var ShowArrow=1;                // Uses arrow gifs when 1
    var KeepHilite=1;               // Keep selected path highligthed
    var Arrws=['tri.gif',5,10,'tridown.gif',10,5,'trileft.gif',5,10];   // Arrow source, width and height

function BeforeStart(){return}
function AfterBuild(){return}
function BeforeFirstOpen(){return}
function AfterCloseAll(){return}


// Menu tree
//  MenuX=new Array(Text to show, Link, background image (optional), number of sub elements, height, width);
//  For rollover images set "Text to show" to:  "rollover:Image1.jpg:Image2.jpg"



Menu1=new Array("Afdichtingstechniek","afd_infra.htm","",2,20,138);
    Menu1_1=new Array("Instrastructuur","afd_infra.htm","",0,20,140);
    Menu1_2=new Array("Gebouwen","afd_gebouwen.htm","",0,20,140);

Menu2=new Array("Vloertechniek","vlr_vloeistof.htm","",4);
    Menu2_1=new Array("Vloeistofdicht / PBV","vlr_vloeistof.htm","",0,20,140);  
    Menu2_2=new Array("Stroefheid / Veiligheid","vlr_stroef.htm","",0,20,140);
    Menu2_3=new Array("Industrie","vlr_industrie.htm","",0,20,140);
    Menu2_4=new Array("Gietasfalt","vlr_giet.htm","",0,20,140);

Menu3=new Array("Slijtlagen","slt_infra.htm","",2);
    Menu3_1=new Array("Infrastructuur","slt_infra.htm","",0,20,140);
    Menu3_2=new Array("Gebouwen","slt_gebouwen.htm","",0,20,140);


Waar gaat het nu fout? Ik kon geen variabele vinden die het hele menu na een klik weer 'herstart' als het ware.

En ten tweede. Browsers vragen bij dit menu of ze dit activeX element mogen uitvoeren. Is er een mogelijkheid om dat te omzeilen? De auteur van dit script heeft dat namelijk wel voor elkaar gekregen, zie hier. In dit geval wordt er niet gevraagd of het menu geladen mag worden, het gebeurt gewoon.

Alvast hartelijk bedankt voor jullie reacties!

  • André
  • Registratie: Maart 2002
  • Laatst online: 07-04 14:13

André

Analytics dude

Als de auteur het wel gelukt is vraag je hem toch hoe hij dat gedaan heeft? Of je vergelijkt zijn instellingen met die van jou.

Wij weten ook niet hoe het script gemaakt is en zouden dus eerst de hele code moeten doorspitten :)

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op donderdag 09 maart 2006 @ 12:40:
[...]
En ten tweede. Browsers vragen bij dit menu of ze dit activeX element mogen uitvoeren. Is er een mogelijkheid om dat te omzeilen? De auteur van dit script heeft dat namelijk wel voor elkaar gekregen, zie hier. In dit geval wordt er niet gevraagd of het menu geladen mag worden, het gebeurt gewoon.

Alvast hartelijk bedankt voor jullie reacties!
Dat lijkt me niets met javascript te maken te hebben, eerder met bijvoorbeeld Flash en IE's gewijzigde behaviour daaromtrent ivm het Eolas patent (zie o.a. [rml][ Flash] Click to activate and use this control[/rml] )

Voor de rest is dat dynamicdrive menu wel dusdanig bloated en ranzig dat ik daar echt niet in ga lopen spitten... Ik denk dat je je vraag dan ook beter aan de maker van dat script kan stellen.

[ Voor 13% gewijzigd door crisp op 09-03-2006 13:08 ]

Intentionally left blank


Verwijderd

Topicstarter
Bedankt voor deze antwoorden. Ik zal kijken of ik de auteur kan benaderen voor het eerste probleem.

Wat betreft dat patent probleem, via deze site heb ik geprobeerd of ik de beveiliging kon omzeilen met de volgende twee methodes:

Methode 1 met document.write:

Frame met menu:
HTML:
1
2
3
  <body leftmargin=0 topmargin=0 scroll=no>
    <script src="Embed.js"></script>
  </body>


Embed.js:
JavaScript:
1
2
document.write('<embed src="menu_advies.js">')
document.write('<embed src="menu_com.js">')


Methode 2 met outherHTML

Frame met menu:
HTML:
1
2
3
4
5
  <body> 
    <div>
      <script src="embedControlOuterHTML.js"></script>
    </div>
  </body>


embedControlOuterHTML.js
JavaScript:
1
2
embedControlLocation.outerHTML = '<embed src="menu_vloer.js">';
embedControlLocation.outerHTML = '<embed src="menu_com.js">';


Toch geeft IE in beide gevallen gewoon de welbekende beveiligingswaarschuwing. Wat doe ik dan verkeerd? Werken deze methodes inmiddels ook niet meer? Wederom alvast bedankt.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Het includen van javascript heeft *niets* met ActiveX te maken; je melding kan daar niet vandaan komen...

Intentionally left blank


Verwijderd

Topicstarter
Het spijt me, zoals ik al aangaf ben ik onbekend met client-side scripting en ik probeerde enkel verder te gaan op de info die je me gaf in je vorige post.

Ik heb de auteur inmiddels ook gemailed, in de hoop dat hij mij met beide problemen verder kan helpen.

/edit: Vreemd genoeg draait het menu online wel zonder de beveiligingswaarschuwing. Nu is het alleen nog uitzoeken hoe ik het menu kan herladen.

[ Voor 23% gewijzigd door Verwijderd op 09-03-2006 15:04 ]

Pagina: 1