Suchscrript funktioniert nicht.

soa

Erfahrenes Mitglied
Habe auf einer Seite ein Script entdeckt, welche die Browserfunktion

STRG + F umsetzt:

Das Script habe ich wie folgt eingebunden:

<script type="text/javascript" src="suche.js"></script>

Dann einen Form Tag eingesetzt:

Code:
Suchen:<form name="search" onSubmit="return findInPage(this.string.value);">
  <font size=3><input name="string" type="text" size=15 onChange="n = 0;"></font>
	<input type="submit" value="Suchen"></form>


Hier noch einmal das komplette Script :

Code:
<script language="JavaScript">


var NS4 = (document.layers);    // Which browser?
var IE4 = (document.all);

var win = window;    // window to search.
var n   = 0;

function findInPage(str) {

  var txt, i, found;

  if (str == "")
    return false;

  // Find next occurance of the given string on the page, wrap around to the
  // start of the page if necessary.

  if (NS4) {

    // Look for match starting at the current point. If not found, rewind
    // back to the first match.

    if (!win.find(str))
      while(win.find(str, false, true))
        n++;
    else
      n++;

    // If not found in either direction, give message.

    if (n == 0)
      alert("Nichts gefunden.");
  }

  if (IE4) {
    txt = win.document.body.createTextRange();

    // Find the nth match from the top of the page.

    for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
      txt.moveStart("character", 1);
      txt.moveEnd("textedit");
    }

    // If found, mark it and scroll it into view.

    if (found) {
      txt.moveStart("character", -1);
      txt.findText(str);
      txt.select();
      txt.scrollIntoView();
      n++;
    }

    // Otherwise, start over at the top of the page and find first match.

    else {
      if (n > 0) {
        n = 0;
        findInPage(str);
      }

      // Not found anywhere, give message.

      else
        alert("Nichts gefunden.");
    }
  }

  return false;
}

</script>

Der Such String wird dann auch in Browserzeile übergeben und an die URL angehängt.

Leider passiert weiter nichts......

Wo könnte wohl der Fehler liegen?


Gruß
SOA
 
Entferne die <script>-Tags... die haben in Javascript-Dateien nichts zu suchen.

Weiterhin:
ersetze die ersten beiden Zeilen hierdurch:
Code:
var NS4 = (window.find);    // Which browser?
var IE4 = (document.all && !window.opera);
...dann funktioniert es auch in Geckos... und im Opera, wo es nicht geht, gibts keine Fehlermeldung;)
 
Die Suchfunktion funktioniert jetzt.
Man muss nur immer auf den Suchen-Button drücken damit das Dokument weiter durchsucht wird.

Jetzt möchte ich diese Funktion erweitern. Ich nehme also die Eventhandler

= > onMouseDown und

=> onKeyDown
-------------------------------------------
Nachdem der Suchen Button gedrückt wurde soll also bei gedrückter Maus oder tastatur
weiter gesucht werden.

Jetzt ist es so, dass man ja eigentlich EventHandler im HTML Bereich einsetzt.

Die Erweiterung müsste meines Erachtens aber hier ansetzen:

if (found) {
txt.moveStart("character", -1);
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
}

Kann mir jemand vielleicht sagen, wie ich die beiden Eventhandler richtig implementiere

Grüße
SOA
 
Schön, bei mir funktioniert das auch.

Aber ich habe auch eine Frage:
Warum funktioniert die window.find() - Methode nicht (mehr), zumindest nicht im IE6?
Keine Ahnung, wie oft die Frage schon gestellt wurde, aber ich habe stundenlang gegooglet. Der Witz ist, dass die Methode in Selfhtml 8.1 noch dokumentiert ist...

Bei mir wird immer ein Laufzeitfehler, Objekt erwartet, generiert...

LG, Mirko
 
Weil window.find() kein Bestandteil von Microsoft-JScript ist, und auch nie war.
(der IE intrpretiert Javascript in seiner eigenen Skriptsprache)

Bei SelfHTML steht über den Methoden jeweils, welcher Browser diese interpretiert.(bei find() steht Netscape4, mehr nicht).
Weiterhin steht dort, dass Netscape6 diese Eigenschaft nicht mehr interpretiert(kann ich jetzt nicht testen, da ich den nicht installiert habe).... unterschlagen wurde aber auf jeden Fall, dass aktuelle Gecko-Browser dies wieder kennen.

Wieauchimmer... der IE kannte es nie.
Warum es dort steht: Es ist Bestandteil von Javascript.... und es gibt noch mehr Browser, ausser dem IE.
 

Neue Beiträge

Zurück