Jörn: PopupFenster am Kursor/Mauszeiger

Hallo,

hätte ein schwierige (für mich) Aufgabe zu lösen.
Ich möchte ein Popupfenster bie click auf eine Grafik starten, aber die
x,y Koordninaten sollen/müssen variabel sein. Mit einer getpos function
kann ich zwar die x,y Koordinaten ermitteln, aber nicht weiterverarbeiten
, weil diese read-only sind. Die einzige Idee die ich noch habe, die Grafik
in einen eigen Layer zu legen, die Koordinaten dieses Layers auszulesen und
Variable festzulegen und diese dann als Öffnungskoordinaten angeben.
Leider weis ich nicht wie man sowas macht.

Damit Ihr einen ein Blick von meinem Script erhaltet ...

<script language="javascript">

var x = 0; var y = 0;

function getpos(Ereignis)
{
  x = Ereignis.pageX;
  y = Ereignis.pageY;

}

document.onClick = getpos;

function hilfe(file,w,h,x,y)
{
 hwin =
window.open(file,"Kontexthilfe","width="+w+",height="+h+",top="+Ereignis.pageX+",left="+Ereignis.pageY+",resizable=yes,scrollbars=yes,toolbar=no,status=no,scrolling=auto,screenX="+x+",screenY="+y);
 hwin.focus();

}
</script>

<body>

<layer id="Hilfe_ID" name="Hilfe2" top="250" left="350" width="200">
Hilfe <a href="javascript:hilfe('hilfe_allgemein.cfm?nummer=5','400','250')" onClick="getpos"><img
src="hilfe_weissklein.gif" width="15" height="13" alt="" border="0"></a>
</layer>

</body>

Vielen Dank für jeglicheb Hilfe

Jörn

  1. Dèjá vu?

    Was genau ist dein Problem:
    (a) Poppt kein Fenster auf? -> Browsereinstellungen prüfen

    (b) geht das Fenster an der falschen Stelle auf? -> PageX,PageY und screenX, screenY kennt nur der Netscape.

    <script language="javascript">

    var x = 0; var y = 0;

    function getpos(Ereignis)
    {
      x = Ereignis.pageX;
      y = Ereignis.pageY;

    }

    Vorsicht!

    document.onClick = getpos;

    wenn document -also deine Seite- schon auf onClick reagieren soll, wie soll dann noch ein anderes Element darauf reagieren?

    <a href="javascript:hilfe('hilfe_allgemein.cfm?nummer=

    5','400','250')" onClick="getpos"><img
    1. getpos() erwartet einen Parameter (laut deinem Script - braucht ihn aber nicht für Funktionalität, da event global).

    2. wenn du bei Ereignissen eine Funktion aufrufen willst, dann tu das auch, also  onClick="getpos()" bei dir nimmt er eine Variable getpos!

    schönen Gruß

    1. Dèjá vu?

      Yupp

      Was genau ist dein Problem:
      (a) Poppt kein Fenster auf? -> Browsereinstellungen prüfen

      Doch, aber am linken oberen Fensterrand x=y=0

      (b) geht das Fenster an der falschen Stelle auf? -> PageX,PageY und screenX, screenY kennt nur der Netscape.

      S.o. außerdem ist Netscape erstmal ok

      <script language="javascript">

      var x = 0; var y = 0;

      function getpos(Ereignis)
      {
        x = Ereignis.pageX;
        y = Ereignis.pageY;

      }

      Vorsicht!

      document.onClick = getpos;
      wenn document -also deine Seite- schon auf onClick reagieren soll, wie soll dann noch ein anderes Element darauf reagieren?

      <a href="javascript:hilfe('hilfe_allgemein.cfm?nummer=

      5','400','250')" onClick="getpos"><img

      Außerhalb des img kann es die koordinaten auswerfen, die Funktion geht später flöten, die wollte ich doch nur um zu sehen ob er die Koordinaten auch ermittelt.

      1. getpos() erwartet einen Parameter (laut deinem Script - braucht ihn aber nicht für Funktionalität, da event global).

      2. wenn du bei Ereignissen eine Funktion aufrufen willst, dann tu das auch, also  onClick="getpos()" bei dir nimmt er eine Variable getpos!

      nachdem ich es jetzt umgeschrieben habe, öffnet Netscape jez kein Fensterchen mehr.

      Wie findest du die Idee mit dem extralayer?

      Gruß Jörn

      schönen Gruß

      1. Dèjá vu?
        Yupp

        (a) Poppt kein Fenster auf? -> Browsereinstellungen prüfen

        Doch, aber am linken oberen Fensterrand x=y=0

        Klar, weil er das Objekt "Ereignis" gar nicht kennt.

        function hilfe(file,w,h,x,y)
        {
         hwin =
        window.open(file,"Kontexthilfe","width="+w+",height="+h+",top="+Ereignis.pageX+",left="+Ereignis.pageY+",resizable=yes,scrollbars=yes,toolbar=no,status=no,scrolling=auto,screenX="+x+",screenY="+y);
         hwin.focus();
        }

        Hier statt Ereignis einfach event verwenden

        oder in deinem onclick="Ereignis=window.event;"  setzen.