Applescript zum Hervorheben von Text in Chrome mit Javascript

Ich kann nicht herausfinden, wie ich dieses Skript anpassen kann, das Text in Safari hervorhebt, damit es mit Google Chrome funktioniert:

set myList to {"AppleScript", "2018", "demo@apple.com"}

tell application "Safari"
    '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();\n                sel.collapse(document.body, 0);//------    To start at the beginning of the document, not after the selectioned text\n                while (window.find('" & thisText & "', true)) {document.execCommand('HiliteColor', false, '#5cdf64');}\n                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

Hier ist meine Google Chrome-Version:

set myList to {"AppleScript", "2018", "CLOSED"}

tell application "Google Chrome"
    tell tab 3 of window 1 to set scrollPos to execute javascript "document.designMode = 'on'; [window.pageXOffset.toString(),window.pageYOffset.toString()]"

    repeat with thisText in myList
        execute javascript "var sel = window.getSelection();\n                sel.collapse(document.body, 0);//------    To start at the beginning of the document, not after the selectioned text\n                while (window.find('" & thisText & "', true)) {document.execCommand('HiliteColor', false, '#5cdf64');}\n                sel.collapseToEnd()"
    end repeat
    execute javascript "document.designMode = 'off';  window.scrollTo(" & (item 1 of scrollPos) & ", " & (item 2 of scrollPos) & ")"
end tell

Antwort :

tell application "Google Chrome"
    execute tab 3 of window 1 javascript "document.designMode = 'on'; [window.pageXOffset.toString(),window.pageYOffset.toString()]"
        --> {"0", "0"}
    execute current application javascript "var sel = window.getSelection();\n                sel.collapse(document.body, 0);//------    To start at the beginning of the document, not after the selectioned text\n                while (window.find('AppleScript', true)) {document.execCommand('HiliteColor', false, '#5cdf64');}\n                sel.collapseToEnd()"
        --> missing value
    execute current application javascript "var sel = window.getSelection();\n                sel.collapse(document.body, 0);//------    To start at the beginning of the document, not after the selectioned text\n                while (window.find('2018', true)) {document.execCommand('HiliteColor', false, '#5cdf64');}\n                sel.collapseToEnd()"
        --> missing value
    execute current application javascript "var sel = window.getSelection();\n                sel.collapse(document.body, 0);//------    To start at the beginning of the document, not after the selectioned text\n                while (window.find('CLOSED', true)) {document.execCommand('HiliteColor', false, '#5cdf64');}\n                sel.collapseToEnd()"
        --> missing value
    execute current application javascript "document.designMode = 'off';  window.scrollTo(0, 0)"
        --> missing value
end tell
Result:
missing value
Für das, was es wert ist, kann ich Safari auch nicht zum Laufen bringen, weil am Anfang der 'window.find()' commandZeile ein "unbekanntes Token" steht. War diese Zeile als Kommentar gedacht? Woher hast du das Skript?
Nur neugierig, was ist der Zweck mit diesem Skript?
Schwer zu erklären, aber im Grunde erhalte ich variable Namen, IPs und andere Daten, und ich suche nach diesen Informationen auf verschiedenen Registerkarten. Wenn Sie sie also hervorheben, ist es wirklich hilfreich, sie schnell zu erkennen

Antworten (1)

Stellen Sie sicher, dass Sie JavaScript von AppleScript in Google Chrome aktiviert haben

Das Ausführen von JavaScript über AppleScript ist deaktiviert. Um es zu aktivieren, gehen Sie in der Menüleiste zu Ansicht > Entwickler > JavaScript von Apple-Ereignissen zulassen.

Ich habe ein paar Änderungen an Ihrem Skript vorgenommen, damit es funktioniert, wobei die Änderungen fett hervorgehoben sind.

  • Die scrollPos-Variable und die damit verbundene Behandlung des Scrollens durch Abrufen und Festlegen der Fensterposition war überflüssig, daher wurden alle Verweise darauf entfernt.
  • Alle ausführenden Verben müssen tell window 1, nicht nur ein Verb. Ich habe to tell window 1den beigefügten Teil des Antrags ergänzt.
  • Das Ausführungsverb nimmt eine Referenz und einen JavaScript-String, nicht nur JavaScript. Ihnen fehlt der Verweis auf alle Ihre Ausführungsverben.
setze myList auf {"AppleScript", "2018", "CLOSED"}

Sagen Sie der Anwendung "Google Chrome" , dass sie Fenster 1 anweisen soll , das aktive Tab- Javascript "document.designMode = 'on';" 
    auszuführen . -- scrollPos und Seitenversatz entfernt

    Wiederholen Sie dies mit thisText in myListAktives Tab- Javascript 
        ausführen "var sel = window.getSelection();
                    sel.collapse(document.body, 0);
                    while (window.find('" & thisText & "', true)) {document.execCommand('HiliteColor', false, '#5cdf64');}
                    sel.collapseToEnd()"
    Ende wiederholenAktives Tab- Javascript 
    ausführen "document.designMode = 'off';" -- scrollPos und Seitenversatz entfernt 
Ende erzählen

Um es auf allen Registerkarten auszuführen, umschließen Sie es mit repeat with atab in tabs:

Sagen Sie der Anwendung "Google Chrome", dass sie Fenster 1 anweisen soll
     , mit atab in Registerkarten zu wiederholen. 
        führen Sie atab javascript "document.designMode = 'on';" aus. -- scrollPos und Seitenversatz entfernt

        Wiederholen Sie dies mit thisText in myListatab javascript 
            ausführen "var sel = window.getSelection();
                    sel.collapse(document.body, 0);
                    while (window.find('" & thisText & "', true)) {document.execCommand('HiliteColor', false, '#5cdf64');}
                    sel.collapseToEnd()"
        Ende wiederholenatab javascript 
        ausführen "document.designMode = 'off';" -- scrollPos und Seitenversatz entfernt
     end repeat 
end tell
Das ist perfekt danke! Wissen Sie, ob ich dieses Highlight auf jedem Tab ausführen kann? Ich klicke möglicherweise auf verschiedene Links innerhalb von Tabs oder öffne möglicherweise einen neuen, sollte ich einen Wiederholungsmodus ausführen?
@Kevin repeat with atab in tabs, siehe Bearbeiten