Wieder mal: Problem mit Dropdownliste unter DIV
Alex
- javascript
Servus Leute!
Es geht wieder einmal um das bekannte Problem, dass Dropdown-Listen ohne Workaround (zumindest im IE) nicht von Ebenen (DIV) überlappt werden können. Im Archiv habe ich zwar eine Lösung des Problems mittels IFRAME gefunden, dieses will aber schlicht und einfach mit dem dynamischen Menü (aus SELFHTML) nicht funktionieren.
Findet vielleicht jemand den Fehler im unten stehenden Script? Das wäre super...
Vielen Dank im Voraus!
<html><head><title>Test</title>
<script type="text/javascript" src="dhtml.js"></script>
<script type="text/javascript">
<!--
function IfrSetVisible(state) {
var DivRef = document.getElementById('Nav');
var IfrRef = document.getElementById('DivShim');
if(state)
{
DivRef.style.display = "block";
IfrRef.style.width = DivRef.offsetWidth;
IfrRef.style.height = DivRef.offsetHeight;
IfrRef.style.top = DivRef.style.top;
IfrRef.style.left = DivRef.style.left;
IfrRef.style.zIndex = DivRef.style.zIndex - 1;
IfrRef.style.display = "block";
}
else
{
// DivRef.style.display = "none";
IfrRef.style.display = "none";
}
}
function Menue() {
if(DOM) {
if(MS)
getElem("id","Nav",null).style.top = document.body.scrollTop + 50;
else
getElem("id","Nav",null).style.top = window.pageYOffset + 50;
}
if(DOM || MS) {
if (!DOM) getElem("id","Nav",null).style.top = document.body.scrollTop + 50;
if (OP) getElem("id","NavLinks",null).style.pixelTop = NavLinksPos;
getElem("id","Nav",null).style.visibility = "visible";
}
else if(NS) {
getElem("id","Nav",null).visibility = "show";
getElem("id","Nav",null).top = window.pageYOffset + 50;
}
IfrSetVisible(true);
}
function noMenue() {
if(DOM || MS)
getElem("id","Nav",null).style.visibility = "hidden";
if(NS)
getElem("id","Nav",null).visibility = "hide";
IfrSetVisible(false);
}
function handleMove(ev) {
if(!MS) {
Event = ev;
if(Event.screenX < 270)
Menue();
else if(Event.screenX > 420)
noMenue();
}
}
function MShandleMove() {
if(MS) {
if(window.event.clientX < 30)
Menue();
else if(window.event.clientX > 200)
noMenue();
}
}
function Event_init() {
if(DOM && !MS && !OP) {
getElem("tagname","body",0).addEventListener("mousemove", handleMove, true);
}
if(NS) {
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove=handleMove;
}
if (DOM && OP) {
document.onmousemove=handleMove;
NavLinksPos=42; //Position des Bereiches NavLinks
getElem("id","NavLinks",null).style.pixelTop=NavLinksPos;
}
if (MS) getElem("tagname","body",0).onmousemove=MShandleMove;
}
//-->
</script>
<style type="text/css">
<!--
body { margin-left:50px; margin-top:20px; margin-right:50px; }
#Nav { position:absolute; top:50px; left:0px; padding:0px; visibility:hidden; margin:0px; z-index:100; background-color:white; display:none;}
#NavLinks { position:absolute; top:42px; left:42px; padding:0px;}
a.nav:link { color:#000080;
font-family:Tahoma,sans-serif; font-weight:bold; font-size:10pt; text-decoration:none; }
a.nav:visited { color:#000080;
font-family:Tahoma,sans-serif; font-weight:bold; font-size:10pt; text-decoration:none; }
a.nav:hover { color:#FFFFFF; background-color:#000080;
font-family:Tahoma,sans-serif; font-weight:bold; font-size:10pt; text-decoration:none; }
a.nav:active { color:#000080;
font-family:Tahoma,sans-serif; font-weight:bold; font-size:10pt; text-decoration:none; }
-->
</style>
</head>
<body onLoad="Event_init()" background="navigation_back.gif" bgcolor="#FFFFFF">
<h1>Die Seite mit der pfiffigen Navigation</h1>
<p>Einfach mit die Maus Richtung linken Fensterrand bewegen.
Um das Menü wieder wegzubekommen, Maus wieder zum rechten Fensterrand bewegen.</p>
<p>Wird das dynamische Menu alle Formular-Elemente überlappen?<br>
<form name="test">
<input type="text" width="10"><br>
<textarea></textarea><br>
<select name="test_select" size=2>
<option value="1">1</option>
<option value="2">2</option>
</select><br>
<input type="checkbox" value="test"> select<br>
<button name"testbutton" type="button">Test-Button</button>
</form>
</p>
<p>Und jetzt kommen noch etliche leere Absätze, damit auch sichtbar wird,
daß das Menü immer an der gleichen Stelle angezeigt wird, egal wie weit man
scrollt.</p>
<p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p>
<p>Na, das dürfte reichen :-)</p>
<div id="Nav">
<img src="navigation.gif" width="250" height="450" border="0" alt="">
<div id="NavLinks">
<style type="text/css">
<!--
a.nav:link { color:#000080;
font-family:Tahoma,sans-serif; font-weight:bold; font-size:10pt; text-decoration:none; }
a.nav:visited { color:#000080;
font-family:Tahoma,sans-serif; font-weight:bold; font-size:10pt; text-decoration:none; }
a.nav:hover { color:#FFFFFF; background-color:#000080;
font-family:Tahoma,sans-serif; font-weight:bold; font-size:10pt; text-decoration:none; }
a.nav:active { color:#000080;
font-family:Tahoma,sans-serif; font-weight:bold; font-size:10pt; text-decoration:none; }
-->
</style>
<a class="nav" href="http://selfhtml.teamone.de/"><b>SELFHTML</b></a><br>
<a class="nav" href="http://selfaktuell.teamone.de/"><b>SELFHTML aktuell</b></a><br>
<a class="nav" href="http://forum.de.selfhtml.org/"><b>SELFHTML Forum</b></a><br>
<a class="nav" href="http://selfaktuell.teamone.de/artikel/"><b>Feature Artikel</b></a><br>
</div>
</div>
<iframe
id="DivShim"
src="javascript:false;"
scrolling="no"
frameborder="0"
style="position:absolute; top:0px; left:0px; display:none;">
</iframe>
</body></html>
Gruß,
Alex
Hi Alex,
ohne mich durch deinen kompletten Code gekämpft zu haben (meiner ist mir schon genug)... ich hatte dasselbe Problem und habe es mittlerweile behoben: <./?t=89155&m=532731>
HIH, Yeti
Hi Yeti,
vielen Dank für den Tipp!
ohne mich durch deinen kompletten Code gekämpft zu haben (meiner ist mir schon genug)... ich hatte dasselbe Problem und habe es mittlerweile behoben: <./?t=89155&m=532731>
Ich habe die Suchfunktion ja wirklich zu Hochtouren angetrieben, aber über diesen Thread bin ich leider nicht gestrauchelt!
Ich werde es einmal so versuchen, obwohl mir eine teilweise Überdeckung schon besser gefallen würde... :-)
Gruss,
Alex