Avatar billede nythjem Nybegynder
19. december 2005 - 14:18 Der er 4 kommentarer og
1 løsning

Min createPopup rykker sig?

Hej Alle..

Jeg har lavet nogle divs, som når der aktiveres contextmenu viser nogle andre divs.

Mit problem er dog bare, at divene burde komme ved mouseevent + 5 osv., men lag 2 og 3 rykker sig underligt langt ned..

Er der nogle der kan forklare hvorfor det sker? Jeg har lavet et helt eksempel, da det jo måske kan være en anelse svært at forstå hvad jeg mener :)



<html>
<head>
<title></title>


<script type="text/javascript">

var oPopup = window.createPopup();

function richContext01() {
  oPopup.document.body.innerHTML = oContext01.innerHTML;
  oPopup.show(event.clientX, event.clientY, 100, 28, box01);
  }

function richContext02() {
  oPopup.document.body.innerHTML = oContext02.innerHTML;
  oPopup.show(event.clientX, event.clientY, 100, 28, box02);
  }

function richContext03() {
  oPopup.document.body.innerHTML = oContext03.innerHTML;
  oPopup.show(event.clientX, event.clientY, 100, 28, box03);
  }

</script>

</head>

<body>

<!-- Begin context menu 01 -->

<div onClick="cOn(this);" id="box01" oncontextmenu="richContext01(); return false">
<p class="header">Her har vi noget tekst..</p>
</div>

<!-- End context menu 01 -->


<!-- Begin context menu 02 -->

<div onClick="cOn(this);" id="box02" oncontextmenu="richContext02(); return false">
<p class="header">Her har vi noget tekst..</p>
</div>

<!-- End context menu 02 -->


<!-- Begin context menu 03 -->

<div onClick="cOn(this);" id="box03" oncontextmenu="richContext03(); return false">
<p class="header">Her har vi noget tekst..</p>
</div>

<!-- End context menu 03 -->



<div id="oContext01" style="display:none">
<ul style="float:left;width:100px;height:28px;padding:0;margin:0;list-style-type:none;background-color:#ECE9D8;border-top:2px solid #F9F9F4;border-left:2px solid #F9F9F4;border-right:2px solid #959285;border-bottom:2px solid #959285;padding-left:2px;">
<li style="display:inline;width:23px;height:24px;background-repeat:no-repeat;background-position:50% 50%;padding-left:4px;padding-top:3px;" onmouseover="this.style.backgroundImage='url(btn_bg.jpg)';this.style.cursor='hand'" onmouseout="this.style.backgroundImage='';this.style.cursor=''" onclick="parent.window.open('http://')" title="View">123</li>
</ul>
</div>

<div id="oContext02" style="display:none">
<ul style="float:left;width:100px;height:28px;padding:0;margin:0;list-style-type:none;background-color:#ECE9D8;border-top:2px solid #F9F9F4;border-left:2px solid #F9F9F4;border-right:2px solid #959285;border-bottom:2px solid #959285;padding-left:2px;">
<li style="display:inline;width:23px;height:24px;background-repeat:no-repeat;background-position:50% 50%;padding-left:4px;padding-top:3px;" onmouseover="this.style.backgroundImage='url(btn_bg.jpg)';this.style.cursor='hand'" onmouseout="this.style.backgroundImage='';this.style.cursor=''" onclick="parent.window.open('http://')" title="View">123</li>
</ul>
</div>

<div id="oContext03" style="display:none">
<ul style="float:left;width:100px;height:28px;padding:0;margin:0;list-style-type:none;background-color:#ECE9D8;border-top:2px solid #F9F9F4;border-left:2px solid #F9F9F4;border-right:2px solid #959285;border-bottom:2px solid #959285;padding-left:2px;">
<li style="display:inline;width:23px;height:24px;background-repeat:no-repeat;background-position:50% 50%;padding-left:4px;padding-top:3px;" onmouseover="this.style.backgroundImage='url(btn_bg.jpg)';this.style.cursor='hand'" onmouseout="this.style.backgroundImage='';this.style.cursor=''" onclick="parent.window.open('http://')" title="View">123</li>
</ul>
</div>

</body>

</html>
Avatar billede roenving Novice
20. december 2005 - 01:10 #1
1. Jeg kan ikke umiddelbart gennemskue hvordan browseren finder på at tage afsæt andre steder, end der hvor man klikker ...

2. En funktion, der skal det samme, kan med fordel bygges op, så den ved, at der kan være forskelle:

function richContext(elm) {
  var num = elm.id.replace(/^.*?(\d+)$/,"$1");
  oPopup.document.body.innerHTML = document.getElementById("oContext"+num).innerHTML;
  oPopup.show(event.clientX, event.clientY, 100, 28, document.getElementById("box"+num));
}

-- og:

<div onClick="cOn(this);" id="box03" oncontextmenu="richContext(this); return false">


-- så skal du kun have den ene funktion, uanset hvor mange gange, du skal have din kontekst-menu !-)
Avatar billede nythjem Nybegynder
20. december 2005 - 10:05 #2
Hej Jes.

Jeg plejer som regel lige at stille det lidt pædagogisk op til mig selv, når jeg forsøger nye objekter, så det var jo bare skønt du havde lavet den fin funktion til mig.

Problemet med afsættene i client eventen er dog stadig den samme, men løste faktisk problemet med at sætte event.clientY til 0?

Måske var det kun Microsofts intention, at der kun skulle være en af hver slags, da de lavede popup objektet *Gg*

Tak for hjælpen, og rigtig god jul..

Og du ligger som altid et velfortjent svar? ;)
Avatar billede roenving Novice
21. december 2005 - 08:03 #3
Velbekomme '-)

-- og i helt lige måde !-)
Avatar billede nythjem Nybegynder
21. december 2005 - 10:04 #4
Cheers :)
Avatar billede roenving Novice
21. december 2005 - 12:39 #5
Tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester