iGadget: Maouskoordinaten über event nach gescrollter Seite...

Hi Ihrs,

ich brauche irgendwie n Tipp was ich falsch mache.
Also, ich hab ne Pinnwand versucht zu machen auf der man nachrichten hinterlassen kann (als Gästebuchersatz) und hab mit dafür n script zusammengeschrieben um den klick.event zu übergeben.
Das klappt nur im IE 5 (unter Mac OS 9), solange ich nicht scrolle (NS 4.7 versagt gänzlich den Seitenaufbau neuerdings).

Wie kann ich auslesen wie die richtigen Maus-Koordinaten sein müssten? Ich glaub das fürn NS is schonmal soweit ok, aber finde par tout keine passende Variable im IE die mir da weiterhelfen kann...

das Script ist:

function Pinpos(e,Div,Cord) {
 if(document.layers) {
  laya=document.layers[Div];
  x=e.pageX+laya.pageXoffset;
  y=e.pageY+laya.pageYoffset;

}else if(document.all) {
  laya=document.all[Div].style;
  we=window.event;
  x=we.clientX;
  y=we.clientY;
  document.pinform.pinx.value = x;
  document.pinform.piny.value = y;
 }
  laya.visibility='visible';
  if(Cord!='x') { laya.left=x; }
  if(Cord!='y') { laya.top=y; }
}

und die Seite liegt unter http://iGadget.de/pwand/

wenn mir jemand unter die Arme greifen könnte wäre ich dankbar :o)

So long

Gadget

  1. Hallo iGadget

    Hi Ihrs,

    ich brauche irgendwie n Tipp was ich falsch mache.
    Also, ich hab ne Pinnwand versucht zu machen auf der man nachrichten hinterlassen kann (als Gästebuchersatz) und hab mit dafür n script zusammengeschrieben um den klick.event zu übergeben.
    Das klappt nur im IE 5 (unter Mac OS 9), solange ich nicht scrolle (NS 4.7 versagt gänzlich den Seitenaufbau neuerdings).

    Das ist kompliziert, deshalb hier mal eine Lösung:

    function mouse_pos(evt)
    {
    if(!evt) evt = window.event;
    var pos = new Object();

    pos.left = evt.pageX ? evt.pageX : evt.clientX;
    pos.top = evt.pageY ? evt.pageY : evt.clientY;

    // Der IE 6 braucht Sonderbehandlung
    if(document.compatMode && document.compatMode == "BackCompat")
    {
    // IE 6 im Quirks-(BackCompat) Modus
    pos.scrollLeft = pos.left + document.body.scrollLeft;
    pos.scrollTop = pos.top + document.body.scrollTop;
    }
    else if (document.compatMode && document.compatMode == "CSS1Compat") {
    // IE 6 im CSS1Compat Modus
    pos.scrollLeft =  pos.left + document.documentElement.scrollLeft;
    pos.scrollTop = pos.top + document.documentElement.scrollTop;
    }else if (document.body)
    {
    // IE < 6 (nicht sicher da ich nur den IE 4 hab)
    pos.scrollLeft = pos.left + document.body.scrollLeft;
    pos.scrollTop  = pos.top + document.body.scrollTop;
    }
    return pos;
    }

    top/left sind die Positonen im Fenster
    scrollLeft/top im Dokument.

    Soweit ich das testen kann.

    Struppi.

    1. Hey, kool, wie schnell das geht hier :o)

      danke schonma für deine hilfe, und da es wie du schon sagst "kompliziert" ist (*g) hab ich jetz ma die scripts sex haben lassen und das kam bei raus.... :

      function Pinpos(e,Div,Cord) {
       if(!e) e = window.event;
       var pos = new Object();
       pos.left = e.pageX ? e.pageX : e.clientX;
       pos.top = e.pageY ? e.pageY : e.clientY;
       // Der IE 6 braucht Sonderbehandlung
       if(document.compatMode && document.compatMode == "BackCompat")
       {
       // IE 6 im Quirks-(BackCompat) Modus
       pos.scrollLeft = pos.left + document.body.scrollLeft;
       pos.scrollTop = pos.top + document.body.scrollTop;
       }
       else if (document.compatMode && document.compatMode == "CSS1Compat") {
       // IE 6 im CSS1Compat Modus
       pos.scrollLeft =  pos.left + document.documentElement.scrollLeft;
       pos.scrollTop = pos.top + document.documentElement.scrollTop;
       }else if (document.body)
       {
       // IE < 6 (nicht sicher da ich nur den IE 4 hab)
       pos.scrollLeft = pos.left + document.body.scrollLeft;
       pos.scrollTop  = pos.top + document.body.scrollTop;
       }
       if(document.layers) {
        laya=document.layers[Div];

      }else if(document.all) {
        laya=document.all[Div].style;
        document.pinform.pinx.value = pos.scrollLeft;
        document.pinform.piny.value = pos.scrollTop;
       }
        laya.visibility='visible';
        if(Cord!='x') { laya.left=pos.scrollLeft; }
        if(Cord!='y') { laya.top=pos.scrollTop; }
      }

      und das der aufruf dafür(auf dem bild):

      <a href="javascript:;" onClick="if (window.event || document.layers) Pinpos(event,'Pinput','');">...</a>

      Dummerweise geschieht nix.... ich bin wohl grad zu deppert, aber ich seh kein feler...

      Aber der IE schweigt still...

      Gadget

      1. if(document.layers) {
          laya=document.layers[Div];

        }else if(document.all) {
          laya=document.all[Div].style;
          document.pinform.pinx.value = pos.scrollLeft;
          document.pinform.piny.value = pos.scrollTop;
        }
          laya.visibility='visible';
          if(Cord!='x') { laya.left=pos.scrollLeft; }
          if(Cord!='y') { laya.top=pos.scrollTop; }
        }

        Was soll da auch passieren?
        Und warum schreibst du JS nur für IE 4 und Netscape 4. Darauf läßt zumindest dein Abfrage auf document.all und document.layers schliessen, das sind nämlich 2 Spezialitäten dieser Browser aus den hoch Zeiten des Browserkrieges.
        Mittlerweile gibt's das DOM und das beherrschen (zumindest zum grossteil) die meisten Browser danach (z.b. auch Opera oder iCap)

        Das positionieren von Layern geht anders, recherchier mal hier im Archiv oder bei google.

        Aber der IE schweigt still...

        Um solche Skripte zu schreiben, solltest du den Mozilla installieren, da dieser in der JS Konsole die Fehler auch wirklich anzeigt und daneben auch nützliche Warnungen auswirft, mit dem IE hast du auf jeden Fall keine Freude beim programmieren von JS.

        Struppi.

        1. Was soll da auch passieren?
          Und warum schreibst du JS nur für IE 4 und Netscape 4. Darauf läßt zumindest dein Abfrage auf document.all und document.layers schliessen, das sind nämlich 2 Spezialitäten dieser Browser aus den hoch Zeiten des Browserkrieges.
          Mittlerweile gibt's das DOM und das beherrschen (zumindest zum grossteil) die meisten Browser danach (z.b. auch Opera oder iCap)

          Schlecht geschlafen heut? gestern warst kooperativer. ;->
          aber dass DOM existiert weiss ich nu auch schon... nur hab ich halt eben die beiden browser hier. Modzilla ist auch installiert aber will nich. deshalb versuch ich mich zu allererst an den browsern die ich hab. bis jetzt hat das aber auch für safari, IE x unter windoof u.ä. gefunzt.
          jetzt hingegen tut nix mehr. sollte aber auch DA laufen, oder?? :-?

          soviel zu deinem "»» Was soll da auch passieren?"...

          ich wäre für ne konstruktive ansage was den code betrifft weitaus dankbarer.

          Das positionieren von Layern geht anders, recherchier mal hier im Archiv oder bei google.

          rat ma wo ich schon alles gesucht habe... und woher ich die schnipsel gesammelt hab?! :-&

          Aber der IE schweigt still...

          Um solche Skripte zu schreiben, solltest du den Mozilla installieren, da dieser in der JS Konsole die Fehler auch wirklich anzeigt und daneben auch nützliche Warnungen auswirft, mit dem IE hast du auf jeden Fall keine Freude beim programmieren von JS.

          das muss ich leider auch bedauern und modzilla preferieren, aber der tut nu ma nich, sch*** java oder wat das is..

          Whatever. browseranpassung erst wenn ich seh dasses überhaupt läuft. Bis dahin sollte das hier irgendwie funzen.

          Danke nochma für produktive tipps.

          Bis l8ers

          Gadg

          1. Mittlerweile gibt's das DOM und das beherrschen (zumindest zum grossteil) die meisten Browser danach (z.b. auch Opera oder iCap)

            Schlecht geschlafen heut? gestern warst kooperativer. ;->

            nö, aber mir war anscheinend nicht aufgefallen, das dein Skript nicht up to date ist.

            aber dass DOM existiert weiss ich nu auch schon... nur hab ich halt eben die beiden browser hier. Modzilla ist auch installiert aber will nich. deshalb versuch ich mich zu allererst an den browsern die ich hab. bis jetzt hat das aber auch für safari, IE x unter windoof u.ä. gefunzt.
            jetzt hingegen tut nix mehr. sollte aber auch DA laufen, oder?? :-?

            Nein, wie ich schon schrieb, ist dein Skript für die 4'er Browser konzipiert.

            soviel zu deinem "»» Was soll da auch passieren?"...

            ich wäre für ne konstruktive ansage was den code betrifft weitaus dankbarer.

            Naja, du kriegst im Mozila eine Fehlermeldung und wenn du der nachgehen würdest, würdest du vielleicht merken warum nichts passiert.

            Das positionieren von Layern geht anders, recherchier mal hier im Archiv oder bei google.

            rat ma wo ich schon alles gesucht habe... und woher ich die schnipsel gesammelt hab?! :-&

            Immer auch auf's Datum achten und im Netz findest du viele veraltete Skripte, die immer noch verwendet werden. Beim suchen ist es auch wichtig den Kontext zu kontrollieren. (eben, zum Beispiel, wenn das Skript nicht im Mozilla läuft solltest du es gleich wieder wegschmeissen).

            Um dir die Suche zu erleichtern:
            http://selfhtml.teamone.de/
            http://selfhtml.teamone.de/dhtml/index.htm
            http://selfhtml.teamone.de/javascript/objekte/index.htm

            Aber der IE schweigt still...

            Um solche Skripte zu schreiben, solltest du den Mozilla installieren, da dieser in der JS Konsole die Fehler auch wirklich anzeigt und daneben auch nützliche Warnungen auswirft, mit dem IE hast du auf jeden Fall keine Freude beim programmieren von JS.

            das muss ich leider auch bedauern und modzilla preferieren, aber der tut nu ma nich, sch*** java oder wat das is..

            javascript! Java ist eine andere Baustelle.
            Mozilla hat wie ich schon sagte eine JS Konsole (zu finden unter Tools > Webdevolpment) die dir henaustens die Fehler anzeigt.

            Whatever. browseranpassung erst wenn ich seh dasses überhaupt läuft. Bis dahin sollte das hier irgendwie funzen.

            Das beudeutet, du verwendest erst ein veraltetes Skript, das auf dem unsichersten und ungenauesten, und damit unbrauchbarsten Browser, irgendwie läuft, um dann festzustellen, das es in den Browern die sich an Standard halten nicht läuft, um dann mühevoll die Fehler zu finden?

            Halte ich nicht für eine sinnvolle Strategie.

            Wie gesagt les dich mal durch die Kapitel und es gibt noch ein Haufen Seiten die dir die Standards erklären und was du in welchem Browser beachten musst. Ist auf jeden Fall besser, als irgendein Skript zu kopieren ohne zu verstehen, was passiert.

            Struppi.