2 votes

AppleScript & Javascript changent la couleur du texte sur safari

Je ne sais pas si c'est possible, mais disons que j'ai quelques variables :

var1 "text1'
var2 "2018"
var3 "demo@apple.com"

Puis-je faire en sorte qu'Applescript trouve chaque instance de ce texte sur Safari (n'importe quel onglet) et change la couleur du texte ? (

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

ou

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

--

Je suis sûr qu'il existe une meilleure option, peut-être en utilisant JavaScript String search() / selector mais je dois quand même passer par là. Je suppose que je peux effectuer une recherche dans le corps du texte en utilisant ceci, puis peut-être en utilisant un délimiteur de texte ? Je suis un peu perdu

 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

1voto

Vous pouvez utiliser le window.find('someString', false or true) pour rechercher une chaîne de caractères dans le texte du document.

Le deuxième paramètre de la commande, s'il est vrai, spécifie une recherche sensible à la casse.

Utilisez le document.execCommand('HiliteColor', false, someColor) pour modifier la couleur de fond du texte fondé.


Voici l'échantillon de script, testé sur 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

0voto

Trung Points 458

Si vous voulez dire sur une page normale que vous visitez, comme vous feriez une recherche (cmd-f) qui met le texte en surbrillance, avec AppleScript, la réponse est non (le dictionnaire AppleScript pour Safari ne vous donne pas cette option).

Si, par contre, vous voulez trouver du texte dans une page html que vous modifiez pour ensuite la télécharger, alors oui, vous pourriez changer la couleur automatiquement avec votre éditeur html, mais je pense que ce n'est pas ce que vous décrivez.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X