Отладчик XCode имеет тенденцию убивать процесс расширения, если он не получает никаких событий от сценария контента.По моим наблюдениям, это совершенно нормально, и в работе ваше приложение не умрет так легко.
Чтобы обойти это поведение, вы можете добавить этот фрагмент в script.js
:
setTimeout(() => safari.extension.dispatchMessage("ping", {}), 1000);
Это заставит контентный скрипт отправлять сообщение с именем «ping» на расширение каждую секунду.Этого должно быть достаточно, чтобы сохранить ваше расширение.Опять же, это действительно нужно только для отладки, вашей производственной сборке не понадобится эта линия для надежной работы.
Имейте в виду, что по умолчанию скрипты содержимого внедряются только на страницах * .webkit.org.Это определяется значением свойства SFSafariToolbarItem
в файле Info.plist
вашего расширения.В целях тестирования вы можете включить расширение на всех веб-сайтах, например:
<key>SFSafariWebsiteAccess</key>
<dict>
<key>Level</key>
<string>All</string>
</dict>
Будьте осторожны, скрипт содержимого не вставляется в пустую вкладку, поэтому обязательно загрузите удаленную страницу.