AppleScript e Javascript cambiano il colore del testo in Safari

2

Non sono sicuro che sia possibile, ma diciamo che ho alcune variabili:

var1 "text1'
var2 "2018"
var3 "[email protected]"

Posso fare in modo che Applescript trovi ogni istanza di questo testo in Safari (qualsiasi scheda) e cambi il colore del testo? (

"document.getElementById("foundhtmlhere").style.color = "#ff0000";"

o

document.querySelector("td > a").style.backgroundColor = "red";

-

Sono sicuro che c'è un'opzione migliore, forse usando JavaScript String search () / selector, ma devo ancora farlo. Immagino di poter cercare all'interno del corpo usando questo, quindi magari usando delimitatore di testo? Sono un po 'perso

 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
    
posta Kevin 15.05.2018 - 23:12
fonte

2 risposte

1

Puoi usare il comando window.find('someString', false or true) per cercare una stringa nel testo del documento.

Il secondo parametro del comando, se è true, specifica una ricerca con distinzione tra maiuscole e minuscole.

Utilizza il comando document.execCommand('HiliteColor', false, someColor) per cambiare il colore di sfondo del testo trovato.

Ecco lo script di esempio, testato su Sierra .

set myList to {"text1", "2018", "[email protected]"}

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
    
risposta data 18.05.2018 - 01:44
fonte
0

Se intendi in una pagina normale che visiti, come faresti con una ricerca (cmd-f) che evidenzia il testo, con AppleScript la risposta è no (il dizionario AppleScript per Safari non ti offre questa opzione).

Se, d'altra parte, intendi trovare testo in una pagina html che stai modificando per poi caricare, allora sì, puoi cambiare il colore automaticamente con il tuo html editor, ma penso che non sia quello che sei descrivendo.

    
risposta data 16.05.2018 - 09:33
fonte

Leggi altre domande sui tag