Преобразование веб-расширения в расширение приложения Safari - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть веб-расширения, которые в настоящее время работают на Chrome, Firefox и Opera.Теперь мне интересно, есть ли способ использовать один и тот же код для создания расширения приложения Safari, может быть что-то вроде PhoneGap (обернуть весь существующий код JS в проекте расширения приложения Safari) или есть ограничения, такие как обработка вкладок для javascript, а некоторые вещи просто нужнобыть написанным на нативном коде.

Спасибо

Ответы [ 4 ]

0 голосов
/ 05 октября 2018

Не все вещи могут быть написаны на Swift.Например, я пытался вызвать dylib из extensionHandler, но это не удалось.

0 голосов
/ 25 сентября 2018

Если мы говорим о расширении приложения Safari, а не об устаревшем расширении safari (устарело в Safari v12), то, насколько я понимаю, фоновый скрипт необходимо переписывать в быстрой форме.Что касается скриптов содержимого, они все еще находятся в JS, но все сообщения, написанные с помощью вызовов API Chrome, должны быть переписаны с использованием API приложений Safari.

0 голосов
/ 28 сентября 2018

Вы должны иметь возможность повторно использовать сценарии содержимого из ваших веб-расширений (но вам нужно переписать код, чтобы иметь возможность отправлять / получать сообщения с «фоном»).Фоновый сценарий должен быть переписан на Swift или Objective-C.

Вам необходимо developp:

  • хост-приложение Mac (которое будет дополнением к расширению): Swift или Objective-C (это приложение должно иметь минимум функций для прохождения обзора Apple - ознакомьтесь с рекомендациями Apple для Mac Apps)
  • расширение: в Swift или Objective-C + HTML / JS (как и в других браузерахКод в Swift (или Obj-C) для расширения является эквивалентом фоновой страницы, имеющейся в веб-расширениях.Он будет управлять кнопкой панели инструментов, жизненным циклом расширения и может общаться с внедренными скриптами.

У вас есть (маленький) пример на сайте Apple: https://developer.apple.com/documentation/safariservices/safari_app_extensions?changes=_2&language=objc

Выбольше не следует использовать Extension Builder (доступный из меню разработчика в Safari), поскольку он предназначен только для устаревших расширений (чистый JS).Поэтому вам нужно войти в XCode.

Последнее, но не менее важное ... Расширения приложений Safari по сравнению с устаревшими расширениями Safari "немного" более ограничены (например, вы не сможетечтобы открыть всплывающую панель инструментов программно, как на самом деле с веб-расширениями Chrome).

0 голосов
/ 24 сентября 2018

Вы можете обратиться по этой ссылке о том, как конвертировать расширение Google Chrome в расширение Firefox или Safari.

В настоящее время необходимо выполнить небольшую ручную работу.

https://github.com/kritollm/chrome-extension-api-for-safari-and-firefox

После того, как я впервые написал этот пост, я узнал о двух очень похожих проектах.

https://code.google.com/p/adblockforchrome/source/browse/trunk/port.js и

https://github.com/jetpack-labs/chrome-tailor-jetpack

Кроме того, вот официальное руководство о том, как преобразовать расширения Chrome в дополнение Firefox с помощью WebExtensions.

...