2017-02-11 25 views
0

Я пытаюсь написать AppleScript, который будет определять, будет ли окно Safari в приватном режиме. Вот AppleScript, чтобы сделать это в Chrome:Обнаружение Safari Частный просмотр в AppleScript

tell application "Google Chrome" 
    set incognitoIsRunning to the (count of (get every window whose mode is "incognito")) is greater than 0 
end tell 

if (incognitoIsRunning) then 
    return "-- PRIVATE MODE --" 
end tell 

Старое решение посмотреть проверяется ли частный вариант меню просмотра больше не работает.

ответ

1

В Safari существует ошибка, которая может быть использована для определения того, включен ли частный режим: Safari не разрешает использовать localStorage.setItem в приватном режиме (см. related StackOverflow post). Мы можем воспользоваться этим, используя фрагмент JavaScript из AppleScript. Если localStorage не поддерживается, JavaScript выдает ошибку (пойманную блоком try/catch), которую мы используем для установки нашего логического значения.

tell application "Safari" 
    set checkMode to " 
     var isprivate = false; 
      try { 
       window.localStorage.setItem('foobar', 1); 
      } catch(e) { 
       isprivate = true; 
      } 
     isprivate; 
" 
    set isPrivate to do JavaScript checkMode in current tab of first window 
end tell 

log isPrivate 

Конечно, вам нужно будет отрегулировать этот AppleScript для установки соответствующего целевого окна/вкладки в Safari.

+2

Это больше не работает в Safari версии 11.0. –