Закройте несколько окон Safari, используя applecript - PullRequest
4 голосов
/ 21 августа 2010

После запуска некоторых моих сценариев у меня появляется куча окон Safari с окнами «Без названия».

Я придумал следующий код, чтобы закрыть все окна с «Unitlted»как имя, но не закрывает все с сообщением об ошибке -> "Safari получил ошибку: не может получить элемент 9 каждого окна. Неверный индекс."Мне пришлось запускаться несколько раз, чтобы закрыть все окна.

tell application "Safari"
    repeat with w in windows
        if name of w is "Untitled" then
            tell w to close
        end if
    end repeat
end tell

Что может быть не так?

Ответы [ 3 ]

3 голосов
/ 21 августа 2010

Используйте справочную форму фильтра AppleScript :

tell application "Safari"
    close (every window whose name is "Untitled")
end tell
2 голосов
/ 21 августа 2010

Проблема в том, что когда вы закрываете окно, количество окон меняется, и ваш цикл прерывается, потому что в конечном итоге одного из окон, над которым вы начали цикл, больше нет (поскольку вы изменяете переменную цикла в середине петли).

Если вы включите журналы событий и ответов, вы сможете увидеть, что происходит немного яснее.

Вот попытка исправить. Это повторяет столько раз, сколько существует окон. Если окно № 1 не имеет названия, оно закрывается. Если нет, то мы переходим к окну № 2 и далее.

tell application "Safari"
    set windowNumber to 1
    repeat the number of windows times
        if name of window windowNumber starts with "Untitled" then
            close window windowNumber
        else
            set windowNumber to windowNumber + 1
        end if      
    end repeat
end tell

Мой яблочный скрипт действительно ржавый. Я уверен, что есть более простой способ сделать это (то есть некоторый синтаксис close all windows whos name starts with "Untitled"), но это, кажется, работает.

0 голосов
/ 14 мая 2013

Это работает для меня:

tell application "Safari"
    close (every tab of every window whose name starts with "some_text")
end tell

или

tell application "Safari"
    close (every tab of every window whose URL contains "some_text")
end tell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...