ptak: Markiertes Wort aus einem Popup -Fenster in ein Form -Input element übernehmen

Hi
Ich möchte gerne aus einem Popup-Fenster mit Stichworten ein markiwertes (selektiertes) Wort in ein Formular Input Feld im aufrufenden Fenster automatisch übernehmen und damit dann eine Suchroutine aufrufen.
Die Suchroutine funktioniert (wenn's interessiert siehe http://www.gefaesschirurgie-wien.at Seite lokale Suche)
Mit Netscape könnnte ich mir vorstellen dass das mit 'onSelect= ' und  'getSelection()' realisierbar ist.
Aber wie geht's mit IE ? Oder geht das gar nicht ?

Vielen Dank an alle klugen Köpfe

ptak

  1. Hallo ptak,

    Mit Netscape könnnte ich mir vorstellen dass das mit 'onSelect= ' und  'getSelection()' realisierbar ist.
    Aber wie geht's mit IE ? Oder geht das gar nicht ?

    OnSelect funktioniert auch mir dem IE ab Version 3.

    Viele Grüße
    Kess

    1. OnSelect funktioniert auch mir dem IE ab Version 3.

      Hi Kess
      Danke für die Antwort. Das Problem ist aber, wie kriege ich die Markierung bzw. das markierte Wort in eine Variable um sie weiterverarbeiten zu können. Ich will keine Aktion ausführen in Abhängigkeit einer Selection, sondern die Selection als solche weiterverarbeiten.

      ptak

  2. Ich möchte gerne aus einem Popup-Fenster mit Stichworten ein markiwertes (selektiertes) Wort in ein Formular Input Feld im aufrufenden Fenster automatisch übernehmen und damit dann eine Suchroutine aufrufen.

    Hallo ptak!

    Folgendes Scrips laesst per Klick vier Begriffe erscheinen. Per Klick auf einen der Begriffe wird der Begriff ins Text-Feld übernommen.
    Falls Du Frames hast und das Text-Feld sich in einem anderen Frame befindet als die Begriffe, musst Du im Frameset eine Variable definieren und in den Unterseiten über "parent.Variable" darauf zugreifen.

    <!doctype html public "-//W3C//DTD HTML 4.0 //EN">
    <html>
    <head>
    <script language="JavaScript">
    <!--
    function anzeigen() {
             if (document.all)
                document.all.Lay1.style.visibility = "visible";
             if (document.layers)
                document.Lay1.visibility = "visible";
    }
    function verstecken() {
             if (document.all)
                document.all.Lay1.style.visibility = "hidden";
             if (document.layers)
                document.Lay1.visibility = "hidden";
    }
    var a = '';
    function wort1(wert) {
    a = wert;
    document.forms[0].elements[0].value = a;
    }
    function reset() {
    document.forms[0].elements[0].value = '';
    }
    //-->
    </script>
    <noscript></noscript>
    </head>
    <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
    <div id="Lay1" style="position:absolute; left:50; top:50; width:100; height:100; visibility:hidden;"><p></p>
    <a href="javascript:wort1('Baum')">Baum</a><br>
    <a href="javascript:wort1('Auto')">Auto</a><br>
    <a href="javascript:wort1('Haus')">Haus</a><br>
    <a href="javascript:wort1('Frau')">Frau</a></div>
    <a href="javascript:anzeigen()">Suchbegriffe anzeigen</a>  <a href="javascript:verstecken()">Suchbegriffe entfernen</a>
    <br><br><br><br>
    <div align=center>
    <form>
    <input type="text"></input>
    </form>
    </div>

    <div align=center>
    <a href="javascript:reset()">Feld leeren</a></div>
    </body>
    </html>

    Gruss Hartmut

    1. Ich möchte gerne aus einem Popup-Fenster mit Stichworten ein markiwertes (selektiertes) Wort in ein Formular Input Feld im aufrufenden Fenster automatisch übernehmen und damit dann eine Suchroutine aufrufen.

      Folgendes Scrips laesst per Klick vier Begriffe erscheinen. Per Klick auf einen der Begriffe wird der Begriff ins Text-Feld übernommen.

      Hi Hartmut
      Danke für dein Script. Muß ich erst mal studieren. Sieht aber auf die Schnelle ganz gut aus. Einziges Problem vielleicht. Die Stichwortliste umfasst so ca. 1200 Begriffe.

      1. Danke für dein Script. Muß ich erst mal studieren. Sieht aber auf die Schnelle ganz gut aus. Einziges Problem vielleicht. Die Stichwortliste umfasst so ca. 1200 Begriffe.

        Wenn Du Deine Stichwortliste mit Verweisen rechnerlesbar vorliegen hast, kannst Du daraus mit einem einfachen Programm (z. B. Perl) die Liste aller dieser Array-Einträge (also JavaScript-Code) generieren und dann die Ausgabe dieses Verarbeitungsschritts in das Skript einfügen.

        1. Danke für dein Script. Muß ich erst mal studieren. Sieht aber auf die Schnelle ganz gut aus. Einziges Problem vielleicht. Die Stichwortliste umfasst so ca. 1200 Begriffe.

          Wenn Du Deine Stichwortliste mit Verweisen rechnerlesbar vorliegen hast, kannst Du daraus mit einem einfachen Programm (z. B. Perl) die Liste aller dieser Array-Einträge (also JavaScript-Code) generieren und dann die Ausgabe dieses Verarbeitungsschritts in das Skript einfügen.

          Hallo Michael
          Danke für den Tip. Werde ich im neuen Jahr einmal probieren. Bis dahin

          Einen guten Rutsch ins neue jahr
          ptak

      2. Die Stichwortliste umfasst so ca. 1200 Begriffe.

        Hi ptak!

        Bei so vielen Stichwörtern frage ich mich, warum Du sie nicht über ein Perl-Script suchen lässt.
        Vielleicht hast Du keine Möglichkeit für CGI?
        Dann kannst Du Deine Stichwortliste dynamisch generieren lassen, auch mit JavaScript:

        Erstmal nimmst Du ein Tabellenkalkulationsprogramm (obs mit Excel geht, weiss ich nicht, ich nehme lieber Star-Office),
        tippst Deine Suchbegriffe in EINE Reihe alle nebeneinander ein.
        Dann speicherst Du sie als txt.-Datei ab, und zwar mit durch Komma getrennte Werte. Die txt.-Datei sieht dann so aus:

        "Baum","Auto","Haus","usw."

        Jetzt machst Du daraus ein Array, indem Du einfach ein "var x = new Array" davorschreibst. Das speicherst Du als .js-Datei ab, auf die Du Dich in Deiner html-Datei referenzierst. Sieht dann so aus:

        var Stichwort = new Array("Baum","Auto","Haus","usw.");

        In der html-Datei nimmst Du anstatt eines Layers besser ein Select-Feld und lässt es nach folgendem Prinzip generieren:

        <html>
        <head>
        <script language="JavaScript" src="Datenbank.js" type="text/javascript">
        </script>
        </head>
        <body>

        <select>
        <script language="JavaScript>
        <!--
        for (i=0; i<1200; i++) {
            document.write('<option>' + Stichwort[i] + '<br>');
        }
        //-->
        </script>
        </select>

        </body>
        </html>

        Darauhin werden Deine in Zellen getippten 1200 Stichwörter geschrieben.

        Gruss Hartmut

        1. In der html-Datei nimmst Du anstatt eines Layers besser ein Select-Feld und lässt es nach folgendem Prinzip generieren:

          Ich nochmals,
          ich habe nicht daran gedacht, dass die for-Schleife so nur unter IE läuft. Für IE + NN muss man es so schreiben:

          <!doctype html public "-//W3C//DTD HTML 4.0 //EN">
          <html>
          <head>

          </head>
          <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
          <form>
          <script language="JavaScript">
          <!--
          var wert = 1;
          document.write('<select name="Zahlen" size=5><option><br>');
          for (i=0;i<1200;i++) {
              document.write('<option>Zahl' + wert + '\n');
              wert+=1;
          }
          document.write('<option><br></select>');
          //-->
          </script>
          </form>
          </body>
          </html>

          Da muss nämlich das "form"-Tag hin, dann läufts auch im NN.

          Nochmals viele Grüsse
          Hartmut

          1. Ich nochmals,
            ich habe nicht daran gedacht, dass die for-Schleife so nur unter IE läuft. Für IE + NN muss man es so schreiben:

            Hallo hartmut
            Ich bin immer wieder erstaunt, wie rasch und kompetent geholfen wird. Ich bedanke mich für deinen Tipp (genauso werde ich es machen) und für die geopferte Zeit.

            Liebe Grüße und einen guten Rutsch
            ptak

            P.S. Wenn's noch kein Internet gäbe, müßte man es zumindest für diesen Zweck erfinden.