• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Text suchen und markieren

ClaryDee

Cox Orange
Registriert
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
 

ClaryDee

Cox Orange
Registriert
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 :)
 

space

Neuer Berner Rosenapfel
Registriert
02.12.05
Beiträge
1.949
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
 
Zuletzt bearbeitet:

ClaryDee

Cox Orange
Registriert
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?
 

space

Neuer Berner Rosenapfel
Registriert
02.12.05
Beiträge
1.949
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
 

ClaryDee

Cox Orange
Registriert
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
 

space

Neuer Berner Rosenapfel
Registriert
02.12.05
Beiträge
1.949
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
 

ClaryDee

Cox Orange
Registriert
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
 

space

Neuer Berner Rosenapfel
Registriert
02.12.05
Beiträge
1.949
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
 

ClaryDee

Cox Orange
Registriert
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
 

space

Neuer Berner Rosenapfel
Registriert
02.12.05
Beiträge
1.949
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
 

ClaryDee

Cox Orange
Registriert
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