1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Text suchen und markieren

Dieses Thema im Forum "AppleScript" wurde erstellt von ClaryDee, 08.03.08.

  1. ClaryDee

    ClaryDee Cox Orange

    Dabei seit:
    14.05.07
    Beiträge:
    101
    Hallo,
    ich würde gerne in Omniweb auf Webseiten nach Text suchen und die Textstellen markieren lassen. Eigentlich hab ich dafür bereits ein Javascript, was diesen Job macht, aber ich würde diese Funktion gerne über Tastatur starten, was mit Javascript wohl nicht geht.

    Und nun hab ich mir überlegt, ob das auch mit Applescript geht. Ich hab schon versucht, mich einzulesen, aber mir fehlt bereits der Startpunkt, weil ich nirgendwo was finde, das eine Box geöffnet wird, mit der der Text abgefragt wird.

    Hilfe :-c
     
  2. Sigur

    Sigur Adams Parmäne

    Dabei seit:
    10.07.06
    Beiträge:
    1.301
    Funktioniert Apfel+F?
     
  3. ClaryDee

    ClaryDee Cox Orange

    Dabei seit:
    14.05.07
    Beiträge:
    101
    Nicht zufriedenstellend... der hinterlegt den gefundenen Text in ganz hellem grau, was ich kaum wieder finde. Ausserdem schliesst sich das Fenster immer nach dem ersten Treffer und muss dann wieder neu gestartet werden. Jede Alternative ist besser als Apfel + F :)
     
  4. space

    space Neuer Berner Rosenapfel

    Dabei seit:
    02.12.05
    Beiträge:
    1.950
    Also wenn Du schon ein funktionierendes Javascript hast, so könntest Du es mit AppleScript ausführen lassen.
    --Das funktioniert zumindest mit Safari bzw.WebKit. Ob OmniWeb das Kommando "do JavaScript" kennt, vermag ich nicht zu sagen--
    Das kann man dann über die Tastatur starten oder noch besser gleich mit einem HotKey Programm ausführen lassen (z.B. Butler) und einem Shortcut belegen.

    Also ungefähr so:

    tell applictaion "OmniWeb"
    do JavaScript "HIER DEIN SCRIPT"
    end tell

    Entweder das Javascript eintragen oder alternativ --falls es als gespeichertes Script vorliegt-- den Pfad zu diesem.

    Gruss
     
    #4 space, 09.03.08
    Zuletzt bearbeitet: 09.03.08
  5. ClaryDee

    ClaryDee Cox Orange

    Dabei seit:
    14.05.07
    Beiträge:
    101
    Nein, geht leider nicht.
    Mit Omniweb schon mal gar nicht, und bei Safari kann ich das Applescript immerhin abspeichern, aber beim starten krieg ich nur ne Fehlermeldung, wahrscheinlich, weil das Javascript für Omniweb geschrieben wurde.

    Mein Code sah im übrigen so aus:

    tell application "Omniweb"
    activate
    do JavaScript "HIER MEIN SCRIPT"
    end tell

    Und wie gesagt, das ging gar nicht...
    Gibt es evtl. ne grosse AppleScript-Quelle, wo ich mal stöbern könnte?
     
  6. space

    space Neuer Berner Rosenapfel

    Dabei seit:
    02.12.05
    Beiträge:
    1.950
    Hi Clarydee!

    Es wäre nett, wenn Du solche Infos das nächste mal gleich postest, dann hätte ich mir meine Antwort sparen können ;)

    Zu jedem AppleScript-fähigen Programm gibt es eine "Bibliothek". Hast Du denn unter Omniweb mal geschaut, ob es überhaupt einen Befehl gibt, um Javascript auszuführen?

    Gruss
     
  7. ClaryDee

    ClaryDee Cox Orange

    Dabei seit:
    14.05.07
    Beiträge:
    101
    Mein Code hat auf Deinem basiert. Ich hab nämlich, was Applescript angeht, überhaupt keine Ahnung. Alles, von Deinem Code abweichende, hab ich mir ergoogelt.
    Hm, und wenn ich das richtig sehe, gibt es wohl keinen Befehl für Javascript unter Omniweb :(

    Danke Dir
     
  8. space

    space Neuer Berner Rosenapfel

    Dabei seit:
    02.12.05
    Beiträge:
    1.950
    Ach so, na dann sorry.

    Und da ich es nicht glauben konnte, dass es da keinen Befehl geben soll, habe ich mir mal die Testversion von Omniweb gezogen
    Und siehe da :)

    Code:
    tell application "OmniWeb"
    	activate
    	set x to window 1
    	do script "DEIN SCRIPT" window x
    end tell
    Geht doch :cool:

    Gruss
     
  9. ClaryDee

    ClaryDee Cox Orange

    Dabei seit:
    14.05.07
    Beiträge:
    101
    Leider nicht mit meinem Javascript.
    Das Javascript, was ich gerne eingebaut oder ersetzt haben wollte, ist hier zu finden und heisst Highlighter. Man muss es aber als Bookmark setzen, sonst klappt das nicht.

    Trotzdem vielen Dank für den Code, den ich mir direkt gespeichert hab, der ist nämlich bestimmt noch zu was gut.
    Und natürlich vielen Dank für die Mühe, die Du Dir mit mir machst
     
  10. space

    space Neuer Berner Rosenapfel

    Dabei seit:
    02.12.05
    Beiträge:
    1.950
    Ja, dein Javascript ist für die Lesezeichenleiste und muss deshalb URL-decodiert und dann noch ein wenig an Applescript angepasst werden (Anführungsstriche maskieren)
    Ersteres kann man online auf einer der URL Encode/Decode Seiten machen (z.B. hier… zweiteres per Hand oder mit einem weiteren Script.

    Code:
    tell application "OmniWeb"
    	activate
    	set x to window 1
    	do script "javascript:(function(){var count=0, text, dv;text=prompt(\"Search phrase:\", \"\");if(text==null || text.length==0)return;dv=document.defaultView;function searchWithinNode(node, te, len){var pos, skip, spannode, middlebit, endbit, middleclone;skip=0;if( node.nodeType==3 ){pos=node.data.toUpperCase().indexOf(te);if(pos>=0){spannode=document.createElement(\"SPAN\");spannode.style.backgroundColor=\"yellow\";middlebit=node.splitText(pos);endbit=middlebit.splitText(len);middleclone=middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit.parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else if( node.nodeType==1&& node.childNodes && node.tagName.toUpperCase()!=\"SCRIPT\" && node.tagName.toUpperCase!=\"STYLE\"){for (var child=0; child < node.childNodes.length; ++child){child=child+searchWithinNode(node.childNodes[child], te, len);}}return skip;}window.status=\"Searching for '\"+text+\"'...\";searchWithinNode(document.body, text.toUpperCase(), text.length);window.status=\"Found \"+count+\" occurrence\"+(count==1?\"\":\"s\")+\" of '\"+text+\"'.\";})();" window x
    end tell
    Funktioniert auch in Safari

    Code:
    tell application "Safari"
    	activate
    	do JavaScript "javascript:(function(){var count=0, text, dv;text=prompt(\"Search phrase:\", \"\");if(text==null || text.length==0)return;dv=document.defaultView;function searchWithinNode(node, te, len){var pos, skip, spannode, middlebit, endbit, middleclone;skip=0;if( node.nodeType==3 ){pos=node.data.toUpperCase().indexOf(te);if(pos>=0){spannode=document.createElement(\"SPAN\");spannode.style.backgroundColor=\"yellow\";middlebit=node.splitText(pos);endbit=middlebit.splitText(len);middleclone=middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit.parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else if( node.nodeType==1&& node.childNodes && node.tagName.toUpperCase()!=\"SCRIPT\" && node.tagName.toUpperCase!=\"STYLE\"){for (var child=0; child < node.childNodes.length; ++child){child=child+searchWithinNode(node.childNodes[child], te, len);}}return skip;}window.status=\"Searching for '\"+text+\"'...\";searchWithinNode(document.body, text.toUpperCase(), text.length);window.status=\"Found \"+count+\" occurrence\"+(count==1?\"\":\"s\")+\" of '\"+text+\"'.\";})();" in document 1
    end tell
     
  11. ClaryDee

    ClaryDee Cox Orange

    Dabei seit:
    14.05.07
    Beiträge:
    101
    Bah wie geil!
    Du hast es tatsächlich hinbekommen! Ich glaub allmählich, das AS eine Materie ist, in die es sich lohnt, sich mal einzuarbeiten...

    Ich bin sprachlos, ehrlich. :-D
     
  12. space

    space Neuer Berner Rosenapfel

    Dabei seit:
    02.12.05
    Beiträge:
    1.950
    Freut mich! :)

    Noch eine Sache, die mir ständig durch den Kopf geht:
    Wie bei Safari kann man Lesezeichen in der Menüleiste mit cmd+1 (bzw. die entsprechende Zahl) aufrufen/ausführen lassen.
    Wollte ich nur mal anmerken, für den Fall, dass dir das nicht bekannt war.

    Grüsse
    Space
     
  13. ClaryDee

    ClaryDee Cox Orange

    Dabei seit:
    14.05.07
    Beiträge:
    101
    :eek: War mir natürlich nicht bekannt, sonst hätte ich uns beiden doch die ganze Arbeit erspart.

    Aber besser, sowas spät zu wissen als niemals. Dann profitiere ich eben jetzt doppelt, zum einen vom Applescript und zum anderen eben vom eingebauten Shortcur :D

    Nochmal vielen Dank
     

Diese Seite empfehlen