AppleScript & Javascript ändern die Textfarbe auf Safari

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

Antworten (2)

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.

Ich bin mir ziemlich sicher, dass Sie Javascript verwenden können, um den HML-Inhalt der Seite zu durchsuchen und sobald die Variable gefunden wurde, die Farbe des Textes zu ändern. ein bisschen wie Multi Highlight für Chrome chrome.google.com/webstore/detail/multi-highlight/…
Anstatt es abzulehnen, warum zeigen Sie uns nicht, wie es mit Applescript geht, wie es die ursprüngliche Frage verlangte? Das Applescript-Wörterbuch bietet Ihnen nicht die Möglichkeit, Farben in Safari abzurufen oder einzustellen. Wenn ich falsch liege, zeigen Sie mir bitte, wo das Wörterbuch das zeigt, denn soweit ich das beurteilen kann, ist das für Safari erforderlich, um eine Textfarbe über AppleScript zu ändern. Natürlich können Sie den Inhalt der Seite mit AppleScript durchsuchen, wie Sie es mit Javascript können. Aber das Ändern der Farbe einer Seite in Safari, die Sie nicht bearbeiten, ist eine andere Sache.
Mein letzter Kommentar dazu (ich gebe meine Punkte auf, um ein Kopfgeld einzurichten, also werde ich eine Weile nicht kommentieren können): Vielleicht ist dies in Chrome machbar; Ich habe nicht überprüft (obwohl ich es bezweifle). Aber ich habe Ihre Frage zu Safari mit AppleScript beantwortet und davon ausgegangen, dass Sie über eine Seite sprechen, die Sie lesen, und nicht bearbeiten. Vielleicht sind diese Annahmen falsch. Wenn nicht, macht es für mich keinen Sinn, es abzulehnen, IMO.
MBUST, ich weiß nicht, warum ich abgelehnt habe, ich denke, es ist sowieso versehentlich, kurzgeschlossen, außerdem habe ich vielleicht meine Antwort hier gefunden. stackoverflow.com/questions/13799154/… UPDATE Ich kann meine Stimme jetzt nicht entfernen, werde ich ein paar Stunden wechseln
Sie haben zuletzt vor 19 Stunden über diese Antwort abgestimmt. Ihre Stimme ist jetzt gesperrt, es sei denn, diese Antwort wird bearbeitet.
Erledigt, entschuldige die Verspätung