Alex Wilde: onMouseover für gesamtes Fenster

Hallo beisamen,

ich möchte für eine Seite eine Popup-Hilfe realisieren. Wie dies aussehen sollte, hab ich mir so gedacht:

function help(obj)
{
   if(obj.getAttribute('helpid', false) != '' && obj.getAttribute('helpid', false) != null)
   {
      ....popup(id)....
   }

}

<div helpid="1">...</div>
<div></div>
<div helpid="2">...</div>

wie man sieht, ist das besondere dabei, das die div-elemente keine onMouseover-Events besitzen, was auch so gewollt ist. Die funktion help() soll aber für alle divs im dokument ausgeführt werden und dann bei einer vorhanden helpid die funktion popup().
Doch wie wie realisiere ich das, dass quasi universal für alle elemente im dokument ein onMouseover-Befehl (help()) ausgeführt wird?

schönen Dank,

Alex

  1. Vielleicht so?

    <body onMouseover="help();">

    Gruss,
    Daniel

    1. <body onMouseover="help();">

      ja das führt zumindest dazu, dass das gesamte dokument angesprochen wird. Da aber die Funktion help() eine Referenz wie docment.all.layer1 bekommen muss um zu prüfen, ob eine helpid vorhanden bei diesem element vorhanden ist, funktioniert das leider nicht. Man müßte

      <body onMouseover="help();">

      kombinieren mit einer Überprüfung, wo sich der Cursor momentan befindet, also über welchem Element... mir fällt aber nichts ein, wie man da rangehen sollte...

  2. Hallo beisamen,

    ^wobei bitte?
    Hallo,

    ich möchte für eine Seite eine Popup-Hilfe realisieren. Wie dies aussehen sollte, hab ich mir so gedacht:
    function help(obj)

    ...

    <div helpid="1">...</div>

    ^ERROR. Das Element DIV hat kein Attribut "helpid".

    <div></div>
    wie man sieht, ist das besondere dabei, das die div-elemente keine onMouseover-Events besitzen, was auch so gewollt ist. Die funktion help() soll aber für alle divs im dokument ausgeführt werden und dann bei einer vorhanden helpid die funktion popup().
    Doch wie wie realisiere ich das, dass quasi universal für alle elemente im dokument ein onMouseover-Befehl (help()) ausgeführt wird?

    Du meinst aber, es soll help(this) ausgeführt werden. Eine parameterlose Funktion wäre nämlich einfach.

    Durchlaufe bei BODY.onload einfach alle DIV-Elemente des Dokuments und weise ihnen die Funktion help(this) zu. Dabei ist allerdings zu beachten, dass nicht alle Browser die Zuweisung des Stings "help(this)" als Funktion interpretieren. Du solltest die Zuweisung deshalb nicht als String, sondern als Function-Objekt ausführen.

    Bsp.:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>Titel</title>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <script type="text/javascript">
    <!--
    function initHelp() {
     var allDIVs=document.getElementsByTagName("DIV");
     for (var i = 0; i < allDIVs.length; i++){
       allDIVs[i].onmouseover = function(){help(this);};
     }
    }
    function help(obj) {
     if (obj.id.match(/^help/)) {
       alert(obj.firstChild.nodeValue);
     }
    }
    //-->
    </script>
    </head>
    <body onload="initHelp();">
    <div id="help1">Hilfe 1</div>
    <div>Keine Hilfe</div>
    <div id="help2">Hilfe 2</div>
    <div id="help3">Hilfe 3</div>
    <div>Keine Hilfe</div>
    </body>
    </html>

    viele Grüße

    Axel

    1. <div helpid="1">...</div>
              ^ERROR. Das Element DIV hat kein Attribut "helpid".

      richtig, aber trotzdem kann man es setzen denn:

      statt

      <div id="help1">Hilfe 1</div>

      nehme ich

      <div helpid="1">Hilfe 1</div>

      und statt dieser Fkt.:

      function help(obj) {
       if (obj.id.match(/^help/)) {
         alert(obj.firstChild.nodeValue);
       }
      }

      einfach diese hier:

      function help(obj) {
       if (obj.helpid) {
         alert(obj.helpid);
       }
      }

      klappt wunderbar!

      viele Grüße

      Axel

      ich danke dir recht herzlich, du hast es echt drauf, auf die initHelp() Funktion wäre ich nie gekommen.
      Dankschön,

      Alex

      1. Hallo,

        <div helpid="1">...</div>
                ^ERROR. Das Element DIV hat kein Attribut "helpid".

        richtig, aber trotzdem kann man es setzen

        Ja, allerdings ist Dein Dokument dann eben kein HTML-Dokument mehr, sondern ein von Dir definiertes XML-Dokument mit HTML-Teilen. Ob alle Browser damit dann glücklich werden, ist anzuzweifeln.

        Lange Rede, kurzer Sinn: Warum ungültiges HTML erzeugen, wenn die Aufgabe mit gültigem auch umzusetzen ist?

        viele Grüße

        Axel