Hej!
Då är jag tillbaka, jag har en div som jag öppnar och lägger "ovanpå" sidan.
Problemet är att jag vill inte att man ska kunna klicka utanför den öppnade diven sålänge den är öppen (som en vanlig alert typ)
Någon som har en bra idé ?
5 svar · 468 visningar · startad av phred
Hej!
Då är jag tillbaka, jag har en div som jag öppnar och lägger "ovanpå" sidan.
Problemet är att jag vill inte att man ska kunna klicka utanför den öppnade diven sålänge den är öppen (som en vanlig alert typ)
Någon som har en bra idé ?
<script>
document.onclick = function(e)
{
e = window.event || e;
var currElm = window.event ? e.srcElement : e.target;
var div = document.getElementById("myDiv");
if (div.style.display == "block"){
while (currElm){
if (currElm == div) return;
currElm = currElm.parentNode;
}
if (window.event)
e.returnValue = false;
else
e.preventDefault();
}
}
</script>
<div id="myDiv" style="display:none;background:red; padding:5px"><a href="javascript:document.getElementById('myDiv').style.display='none';void(0);">Hide div</a></div>
<a href="http://www.webforum.nu/">test</a>
<a href="javascript:document.getElementById('myDiv').style.display='block';void(0);">Show div</a>
Tack för det peter men det fungerar inte riktigt som jag tänkt mig.
Jag vill att det ska likna en vanlig alert så mycket det går, använder jag scriptet ovan så kan jag skriva i formulär osv, jag behöver inte funktonen att man inte kan klicka någonstans i webbläsaren men i alla fall ingenstans på siten.
klickar man utanför min div så vill jag att den ska få "focus" direkt, som en alert.
Det här kanske är det närmaste man kan komma ?
jag har nu slängt in en div som täcker hela sidan och ligger "under" den diven som jag öppnat.
Detta gör att jag inte kan klicka på något i FF, Opera och Safari dock så kan jag klicka på länkar och markera text i IE(6 & 7), har svårt att hitta någon lösning på detta.
Peter känner u dig sugen ? ;)
Sjävlklart får någon annan ge sig på en lösning också.
Vad sägs om att du i IE ger diven en bakgroundsfärg samt (nästan) genomskinlig alfa-transparens. filter: alpha(opacity=1); background-color: black;
Detta bör stoppa musevents.
Med tanke på vad du gör så kan det vara en fin designgrej att dessutom utnyttja detta trick för att täcka sidan med en semi-transpsarant ruta. Då blir det mer så här: filter: alpha(opacity=40); opacity: 0.4; background-color: black;
helt riktigt så fungerar det, men då sätter den ju opcity på allt som ligger i min div som är 100% och det vill jag ju inte :/
EDIT*
jag löste det genom att lägga en 1x1 px genomsinlig gif som bakgrund i min 100% div. Det fungerar perfekt i FF, IE 6 & 7, Opera och Safari.
Tack för hjälpen.