Zum Inhalt springen

Layer erscheinen nicht im IE

Erstellt am 9. November 2009 · 7 Antworten · letzte Antwort am 25. Januar 2010

Tags: JavaScript & AJAX, HTML & CSS, Frage

Annna ·

Hallo!

Habe nach diesem Post #39055
von Just2B ein vertikales Layermenu erstellt.
War auch erst hellauf begeistert, dass es es reibungslos klappte.

Doch dann leider das böse Erwachen: im IE 8 erscheinen leider keine Layer. Die Pfeile als Hinweis für die Untermenüpunkte erscheinen, aber die Layer leider nicht.

Was mache ich falsch dass es bei allen klappt, nur bei mir nicht??? 😢

Hier meine Codierungen:

JavaScript:

function IEHoverPseudo() {
 
	var navItems = document.getElementById("nav").getElementsByTagName("li");
	
	for (var i=0; i<navItems.length; i++) {
		if(navItems[i].className == "menuparent") {
			navItems[i].onmouseover=function() { this.className += " over"; }
			navItems[i].onmouseout=function()   { this.className = "menuparent"; }
		}
	}
}
window.onload = IEHoverPseudo;

Einbindung im TS:

page = PAGE
page {
 typeNum = 0 
 headerData = COA
 headerData.11 = TEXT
 headerData.11.value = <script type="text/javascript" src="JSLayer.js"></script>

NAVILINKS = HMENU
NAVILINKS {
   special = directory
   special.value = 3 
	1 = TMENU
	1 {
		expAll = 1
		wrap = <ul id="nav">|</ul>
		noBlur = 1
		NO = 1
		NO.wrapItemAndSub = <li>|</li>
		IFSUB = 1
		IFSUB.wrapItemAndSub = <li class="menuparent">|</li>
		ACTIFSUB < .IFSUB
	  }
	
	2 < .1	
	2.wrap = <ul>|</ul>
	3 < .2
	4 < .2
}

Und hier das CSS

#navilinks 	{ margin-left:60px; }
#navilinks ul	{ font-weight:normal; list-style:none;  margin:0px; padding:0px;}
#navilinks ul a 	{ display:block; padding-left:5px;  font-size:10px; font-weight:bold;  }
#navilinks li   	{ line-height:15px;  }


ul#nav,
ul#nav ul	{ margin:0; padding:0; width:132px; border-bottom: 1px solid #AAAAAA; 
	  background:#CCDDFF;  color:black; font-size: 100%; }

ul#nav li	{ position:relative; list-style:none; }
 
ul#nav li a	{ padding:5px; display:block; text-decoration:none; color:black; border:1px solid #999999; 
	  border-bottom:0; }

/* Fix IE. Hide from IE Mac \*/
* html ul#nav li   { float: left; height: 1%; }
* html ul#nav li a { height: 1%; }
/* End */

ul#nav ul	{ position:absolute; display:none; left:131px; top:0; } /* 1 Pixel weniger als Menu-Breite */
 
ul#nav li ul li a 	{ padding: 2px 5px; background-color:#FFFFDD;  }      /* Untermenu - Layer*/
ul#nav li:hover ul ul,
ul#nav li:hover ul ul ul,
ul#nav li.over ul ul,
ul#nav li.over ul ul ul 	{ display:none; }                                /* Hide sub-menus initially */

ul#nav li:hover ul,
ul#nav li li:hover ul,
ul#nav li li li:hover ul,
ul#nav li.over ul,
ul#nav li li.over ul,
ul#nav li li li.over ul	{ display:block; }                                /* The magic */
 
ul#nav li.menuparent { background:transparent url(/fileadmin/Icons/IconPfeilRechts.gif) right center no-repeat; }
 
ul#nav li.menuparent:hover,
ul#nav li.over	{ background-color:white; }
ul#nav li a:hover	{ color:mediumblue; text-decoration:none; }

Danke vielmals im Voraus.

Annna

Annna ·

Hallo!

Bin den Tread von Just2B noch mal durchgegangen.
Vermute nun doch sehr, dass es am falsch eingebundenen JS liegt.
Denn
a.) im Quellcode steht nur <title>xxxx -<script type="text/javascript" src="JSLayer.js"></script>yyyyyyy</title> den reinen Code finde ich nicht.

b.) ich habe keine Erfahrung mit dem Einbinden von JS.

Obwohl ich alles mehrfach geprüft habe, habe ich keine Ahnung wo ich was falsch gemacht haben könnte.
Ich weiss nun nicht mehr wo ich noch suchen sollte.
Gibt es jemand, der mal in meinen Account schauen würde???

Viele Grüße und vielen Dank im Voraus
Annna

Annna ·

Hay Just2b!

Danke vielmals für die schnell Antwort.

Erst lagen HTML- und JS-Datei in /fileadmin/Template
Nun liegt die JS-Datei in /fileadmin.

Kann aber trotz mehrfachen Cachens noch keine Layers sehen.
Wo muss die JS-Datei denn nun wirklich hin?

Vielen Dank und viele Grüße

Annna

Hier noch mal das TS:

headerData.11 = TEXT
headerData.11.value = <script type="text/javascript" src="JSLayer.js"></script>
...
stylesheet = fileadmin/Template/P34StylesHaupt.css
...
template.file = fileadmin/Template/P34VorlageHaupt.html

Nachtrag:
Habe eben mal alle Dateien nach fileadmin verfrachtet ==> auch keine Layer 😢

Annna ·

Hay!

Mit Backslash oder ohne oder .. - es kommt nichts an! 😢

headerData.11.value = <script type="text/javascript" src="fileadmin/JSLayer.js"></scrc>

Viele Grüße
Annna

Annna ·

Hay!

Ich glaube ich dreh durch!!! #giggle# #giggle# #giggle#

Nach stundenlangem Probieren:

  includeJS.file1 = fileadmin/JSLayer.js

und wieder reinsetzen des entfernten Leerschritts (wozu steht der da?)

 " over";

scheint es zu gehen. 8-) 8-)

Annna

grst01 ·

Hallo zusammen,

erstmal ein dickes Lob für das Script und das es überhaupt zur freien Verwendung bereitgestellt wurde!

Funzte auf Anhieb!

Leider stehe ich nun vor einer anderen Herausforderung: mein JAVA ist so schlecht, das ich hier hänge.

Ich habe zwei Menüs 10=HMENU und 20=HMENU die das Script benutzen.

Leider kann ich immer nur eins einblenden. Sobald das zweite Menü eingebunden wird, funktionieren der Slideout-Effekt im IE nur beim ersten Menü. ANscheind durchsucht das JS-Script nur die erste "Box"...

Hier mal ein paar Fetzen von meinem TS:

temp.mainTemplate.marks.CONTENTLEFT.6 {
10 = HMENU
10 {
	special = directory
	special.value = XY
	1 = TMENU
        1.wrap = <div>Überschrift 1</div><ul id="navvert">|</ul>

.....
}

20 = HMENU
20 {
	special = directory
	special.value = AB
	1 = TMENU
        1.wrap = <div>Überschrift 2</div><ul id="navvert">|</ul>
.....
}
}

Wie man sehen kann, wrappe ich mir für jeden Bereich eine eigene Überschrift. Für das CSS habe ich einen anderen Bezeichner verwendet, den habe ich auch im JS angepasst.

Komischer Weise habe ich jetzt diese Effekt und weiß hier nicht weiter.

Ich würde mich über ein paar Vorschläge (müssen keine fertigen Lösungen sein) zur Abhilfe meines Problems freuen.

Schönen Abend
Stefan