JavaScript (AppleScript): найти текст и выделить - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь найти каждый экземпляр какого-либо текста и выделить его в сафари, независимо от того, на какой вкладке он находится.

Здесь приведен код:

set myList to {"ask", "yesterday", "more random e.g"}
try
    tell application "Safari"
        do JavaScript "document.designMode = 'on';" in tab 1 of window 1


        repeat with thisText in myList
            do JavaScript "var sel = window.getSelection();
                    sel.collapse(document.body, 0);
                    while (window.find('" & thisText & "', true)) {document.execCommand('HiliteColor', false, '#5cdf64');}
                    sel.collapseToEnd()" in tab 1 of window 1
        end repeat
        do JavaScript "document.designMode = 'off';" in tab 1 of window 1

    end tell
on error
    --
end try

проблема сэтот код:

  • Страница будет прокручиваться вниз и вверх при запуске скрипта
  • Это не будет искать на всех вкладках
  • Если я нажму на ссылку /обновление страницы, которое не будет работать (я думаю, что я могу использовать повтор, но тогда у меня возникает раздражающая проблема с прокруткой)
  • Если возможно, мне нравится, чтобы каждый экземпляр одной переменной имел одинаковый цвет, тогда другой цвет для другой переменной...

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете сделать цикл для работы со всеми вкладками в самом переднем окне, как это:

set myList to {{"ask","#5cdf64"}, {"yesterday", "#FFFF00"}, {"more random e.g", "#FF0000"}}
tell application "Safari"
    activate
    set theWindow to front window
    tell theWindow
        set tabCount to count of tabs
        repeat with tabIndex from 1 to tabCount
            set current tab to tab tabIndex
                tell current tab
                    repeat with colourPair in myList
                        do JavaScript "document.designMode = 'on'"
                        do JavaScript "var sel = window.getSelection(); sel.collapse(document.body, 0); while (window.find('" & (item 1 of colourPair) & "', true)) {document.execCommand('HiliteColor', false, '" & (item 2 of colourPair) & "');}"
                        do JavaScript "document.designMode = 'off'"
                    end repeat
                end tell
        end repeat
    end tell
end tell

Ваш JavaScript будет тогда указывать на правую вкладку без необходимости жестко кодировать ссылки на окно иtab.

Ваше требование назначить свой цвет каждому экземпляру в myList выполняется с помощью «списка списков» с парами поискового запроса и цветового кода.

Я думаю, что прокрутка как-то связана с sel.collapseToEnd(), что, я думаю, вам не нужно.

...