Ich bin mir nicht sicher, ob dies möglich ist, aber sagen wir, ich habe ein paar Variablen:
var1 "text1'
var2 "2018"
var3 "demo@apple.com"
Kann ich Applescript dazu bringen, jede Instanz dieses Textes in Safari (jeder Registerkarte) zu finden und die Farbe des Textes zu ändern? (
"document.getElementById("foundhtmlhere").style.color = "#ff0000";"
oder
document.querySelector("td > a").style.backgroundColor = "rot";
--
Ich bin mir sicher, dass es eine bessere Option gibt, vielleicht mit JavaScript String search() / selector, aber ich muss das noch durchgehen. Ich denke, ich kann damit im Körper suchen, dann vielleicht mit Texttrennzeichen? Ich bin ein bisschen verloren
tell application "Safari"
tell document 1
set body to do JavaScript "document.body.innerHTML"
set body to do JavaScript "document.getElementsByTagName('body').item(0).innerHTML"
end tell
end tell
return body
Sie können den Befehl verwenden window.find('someString', false or true)
, um eine Zeichenfolge im Text des Dokuments zu suchen.
Wenn der zweite Parameter des Befehls wahr ist, gibt er eine Suche mit Berücksichtigung der Groß-/Kleinschreibung an.
Verwenden Sie den document.execCommand('HiliteColor', false, someColor)
Befehl, um die Hintergrundfarbe des Grundtextes zu ändern.
Hier ist das Beispielskript, getestet auf Sierra .
set myList to {"text1", "2018", "demo@apple.com"}
tell application "Safari"
-- to change the color, set the 'document.designMode' to on
-- get the scroll position of the document, because the 'window.find()' command change the scroll position when it select the founded string
set scrollPos to do JavaScript "document.designMode = 'on'; [window.pageXOffset.toString(),window.pageYOffset.toString()]" in document 1
repeat with thisText in myList
do JavaScript "var sel = window.getSelection();
sel.collapse(document.body, 0);//------ To start at the beginning of the document, not after the selectioned text
while (window.find('" & thisText & "', true)) {document.execCommand('HiliteColor', false, '#ff0000');}
sel.collapseToEnd()" in document 1
end repeat
-- restore the scroll position
do JavaScript "document.designMode = 'off'; window.scrollTo(" & (item 1 of scrollPos) & ", " & (item 2 of scrollPos) & ")" in document 1
end tell
Wenn Sie auf einer normalen Seite, die Sie besuchen, meinen, wie Sie eine Suche (cmd-f) ausführen würden, die den Text hervorhebt, lautet die Antwort mit AppleScript nein (das AppleScript-Wörterbuch für Safari bietet Ihnen diese Option nicht).
Wenn Sie andererseits Text auf einer HTML-Seite finden möchten, die Sie bearbeiten, um sie dann hochzuladen, können Sie die Farbe automatisch mit Ihrem HTML-Editor ändern, aber ich denke, das ist nicht das, was Sie beschreiben.
Kevin
MBUST
MBUST
Kevin
Kevin
Kevin