webForumDet fria alternativet
Logga in / Bli medlem

ska ej kunna klicka utanför div.

JavaScript

5 svar · 470 visningar · startad av phred

Medlem sedan nov. 2005314 inlägg
Frågan#1

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é ?

Medlem sedan dec. 20025 483 inlägg
#2
<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>
Medlem sedan nov. 2005314 inlägg
#3

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 ?

Medlem sedan nov. 2005314 inlägg
#4

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å.

Medlem sedan aug. 20039 340 inlägg
#5

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;

Medlem sedan nov. 2005314 inlägg
#6

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.

259 ms totalt · 4 externa anrop · v20260731065814-full.05830320
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)