AppleScript для открытия URL-адреса в Safari дает сбой для веб-сайтов на основе Flash

Я пытаюсь открыть URL-адрес в Safari. Он отлично работает для веб-сайтов без встроенного Flash, но вызывает сбой Safari для Flash-сайтов.

Пример (это РАБОТАЕТ):

tell application "Safari" to open location "http://google.com"

Это СБОЙ, когда Safari еще не запущен:

tell application "Safari" to open location "http://grooveshark.com"

Я заметил две вещи:

  • Safari аварийно завершает работу только для веб-сайтов со встроенным Flash
  • Приведенный выше скрипт дает сбой только в том случае, если создается новый экземпляр Safari (т.е. Safari не запускался раньше)

Из второго наблюдения я предполагаю, что это может быть какая-то проблема с разрешением. Может быть, экземпляр Safari, запущенный из AppleScript, имеет проблемы с загрузкой плагинов?


person Mark    schedule 04.06.2010    source источник
comment
Не проблема с яблочным скриптом. Также происходит для [NSWorkspace openURL:] См. здесь: idevgames.com/mybb/showthread .php?tid=1886   -  person Mark    schedule 04.06.2010
comment
На самом деле, возможно, это проблема Applescript. Я заметил, что сбой NSWorkspace происходит только тогда, когда тестовая программа запускается из XCode. Запускал через Finder, работает нормально. Однако приведенный выше Applescript дает сбой при запуске в редакторе сценариев.   -  person Mark    schedule 04.06.2010


Ответы (2)


Знаете ли вы, что «открыть местоположение» — это не команда Safari? Таким образом, вы не должны указывать Safari запускать эту команду. «Открыть местоположение» входит в стандартные дополнения к applescript и используется для открытия URL-адреса в приложении по умолчанию, которое обрабатывает URL-адрес. Кроме того, если Safari является приложением по умолчанию для пользователя, и если оно падает, если сафари еще не запущено, то почему бы сначала не запустить сафари, а затем вызвать вашу команду... Я не пробовал... это просто предположение...

tell application "Safari" to launch
open location "http://grooveshark.com"

Кстати, если вы хотите убедиться, что сафари используется, вы открываете URL-адрес следующим образом...

tell application "Safari"
    launch
    make new document
    tell document 1 to set URL to "http://grooveshark.com"
end tell
person regulus6633    schedule 05.06.2010
comment
Спасибо за Ваш ответ. Почему-то даже первый яблочный скрипт теперь работает. Может быть, XCode как-то сломал вещи. На других форумах, где упоминается эта проблема, люди также запускали XCode до возникновения этой ошибки. - person Mark; 05.06.2010

Я столкнулся с подобной проблемой некоторое время назад, работая над Xcode. Позже я понял, что это было вызвано активом во Flash. Если вы превратите свой applescript в приложение, проблема должна быть решена.

В Xcode перейдите в Run -> Stop on Debugger()/DebugStr() и снимите флажок с этой опции, если она включена, и снова создайте приложение.

person Vishvesh    schedule 19.01.2011