Wyłączone menu programisty Safari

Sep 14 2020

Dlaczego moja opcja „Pokaż menu rozwijania Safari” byłaby wyszarzona i nie można jej było kliknąć? Próbowałem znaleźć kroki, aby to włączyć, ale wszyscy mówią po prostu kliknij pole wyboru. Czy muszę gdzieś się zalogować i zmienić ustawienia uprawnień?

Safari w wersji 13.1.2 (14609.3.5.1.5) na Macbooku Air macOS Mojave w wersji 10.14.6 (18G6020)

Odpowiedzi

2 user3439894 Sep 16 2020 at 10:14

Testowanie pod pełni zaktualizowanym MacOS Mojave 10.14.6 z Safari 13.1.2 gdy przełączenie opcji Pokaż Opracowanie menu w pasku menu wyboru w Safari > Preferencje ... > Zaawansowane , istnieją dwa PLIST pliki , które się zmodyfikowane. Jeden plik o jeden klucz zmodyfikowany, a drugi plik po trzy klawisze modyfikowane, tj:

  • ~ / Library / Preferences / com.apple.Safari.SandboxBroker.plist
    • ShowDevelopMenu
  • ~ / Library / Containers / com.apple.Safari / Data / Library / Preferences / com.apple.Safari.plist
    • IncludeDevelopMenu
    • WebKitDeveloperExtrasEnabledPreferenceKey
    • WebKitPreferences.developerExtrasEnabled

Wartość wszystkich czterech z tych klawiszy są logiczna , a gdy Pokaż menu na pasku menu Develop pole wyboru jest zaznaczone, wartość jest tak , prawdziwe lub 1 w zależności od tego, jak ktoś czyta te ustawienia.

W Terminalu defaults read ... komenda zwróci 1albo 0, lub, jeśli klucz nie jest obecne błędy to z komunikatem.

Przykład powłoki skrypt kod , poniżej, został przetestowany i działa w normalnych warunkach, jednak nie może pracować na nieaktywnym Pokaż menu w pasku menu Develop wyboru . To powiedziawszy, naprawdę nie masz nic do stracenia, ale wystarczy kilka minut, aby spróbować.

Uwagi:

  • Ważny! Aby ten przykładowy skrypt powłoki działał, musisz przynajmniej tymczasowo dodać Terminal do Preferencji systemowych > Bezpieczeństwo i prywatność > Prywatność > Pełny dostęp do dysku , a terminal powinien zostać zamknięty, gdy to zrobisz.
  • Gdy przykład skrypt jest uruchamiany, Safari powinny być zamknięte, a jednak, jak kodowana będzie go zamknąć, jeśli jest otwarty. Otworzy się również po wprowadzeniu zmian.
  • Ze względu na inne środki bezpieczeństwa systemu operacyjnego ( sandboxing ) plik com.apple.Safari.plist musi zostać skopiowany , zmodyfikowany w tym miejscu, a następnie przeniesiony z powrotem. Skrypt powłoki , jak kodowany , obsługuje to. Com.apple.Safari.SandboxBroker.plist plik jest modyfikowany w miejscu./tmp/
  • Zgodnie z kodem, kopie zapasowe dwóch plików PLIST są tworzone z rozszerzeniem .bak , jednak skrypt powłoki można uruchomić tylko raz, chyba że zostanie usunięty z obu plików , co spowoduje nadpisanie oryginalnych kopii zapasowych ! ncp -avn
  • Zgodnie z kodem, wyświetli informacje debugowania ( set -x), a to na wypadek, gdybyś miał problem, możesz skopiować i wkleić dane wyjściowe z terminala w celu rozwiązania problemu, jeśli zajdzie taka potrzeba. Jeśli więc wystąpi problem, nie zamykaj okna, dopóki nie zostanie skopiowany i wklejony w innym miejscu, abym mógł go zobaczyć.

Aby użyć przykładowego kodu skryptu powłoki :

  1. Otwórz Terminal i uruchom następujące polecenie złożone :

    touch sdmcb; chmod u+x sdmcb; open -e sdmcb
    
  2. Skopiuj i wklej przykładowy kod skryptu powłoki do otwartego dokumentu sdmcb , a następnie zapisz go i zamknij.

  3. Po powrocie do terminala użyj następującego polecenia, aby uruchomić skrypt powłoki :

    ./sdmcb
    

To wszystko, to zadziała lub nie, to jedyna rzecz, o której mogę pomyśleć, bez uruchamiania systemu odzyskiwania systemu macOS i usuwania dwóch plików PLIST , co może usunąć ustawienie, które powoduje, że na początku jest nieaktywne, jeśli jest nawet w tych dwóch plikach .


Przykładowy kod skryptu powłoki :

#!/bin/bash

set -e
set -x

[[ $(ps x | grep '[S]afari.app') == "" ]] || killall Safari; sleep 2 cd "$HOME/Library/Containers/com.apple.Safari/Data/Library/Preferences/" || exit
cp -v 'com.apple.Safari.plist' '/tmp/' || exit
cp -avn 'com.apple.Safari.plist' 'com.apple.Safari.plist.bak' || exit
defaults write '/tmp/com.apple.Safari.plist' "IncludeDevelopMenu" -bool 'yes'
defaults write '/tmp/com.apple.Safari.plist' "WebKitDeveloperExtrasEnabledPreferenceKey" -bool 'yes'
defaults write '/tmp/com.apple.Safari.plist' "WebKitPreferences.developerExtrasEnabled" -bool 'yes'
mv -v '/tmp/com.apple.Safari.plist' .
cd "$HOME/Library/Preferences/" || exit cp -avn 'com.apple.Safari.SandboxBroker.plist' 'com.apple.Safari.SandboxBroker.plist.bak' || exit defaults write "$HOME/Library/Preferences/com.apple.Safari.SandboxBroker.plist" "ShowDevelopMenu" -bool 'yes'
killall cfprefsd
sleep 3
open -a "/Applications/Safari.app"