Лучший способ написать расширение Safari 4

Каков наилучший способ написать расширение Safari? Я написал пару расширений XUL для Firefox, и теперь я хотел бы написать их версии для Safari. Есть ли способ, который позволит вам добавлять кнопки или формы в пользовательский интерфейс браузера, поскольку это невозможно с помощью диспетчера ввода или сервисного меню?

Ответы

Ответ 1

С выпуском Safari 5.0 Apple выпустила новую основу расширения для разработчиков. В функциях он похож на структуру Firefox extesion, позволяющую настраивать кнопки, панели инструментов, контекстные меню, вставки с использованием javascript и html 5

Подробнее по этой ссылке

http://developer.apple.com/safari/library/documentation/UserExperience/Reference/SafariExtensionsReference/index.html

Ответ 2

Разработка плагина Safari нетривиальна. Интерфейс написан в Objective-C, и большая часть его даже не является частью WebKit (поэтому вы не можете видеть источник), но есть механизм для проверки и исправления иерархии объектов запущенного приложения. Он требует понимания Cocoa и Objective-C, но не ниже.

Вот обзор высокого уровня, который у меня был в моих закладках процесса http://livingcode.org/2006/tab-dumping-in-safari. Просматривается создание плагинов Safari с использованием Python с рабочим (возможно, устаревшим) кодом. Вместо Python вы можете использовать все, что имеет привязки Objective-C.

Есть две основные части:

  • Вам нужно прикрепить свой код к запущенному Safari. Обычно это делается с SIMBL http://www.culater.net/software/SIMBL/SIMBL.php.

  • Когда вы находитесь внутри, вам нужно понять, что нужно запланировать. Там есть учебник по обращению Cocoa приложений http://www.culater.net/wiki/moin.cgi/CocoaReverseEngineering, который ссылается на самый важный инструмент: class-dump http://www.codethecode.com/projects/class-dump/ (ссылка на wiki не работает). Класс-дамп дает вам полную иерархию классов Safari, где вы можете догадываться по именам, что конкретно нужно исправлять. Это очень пробный и ошибочный режим.

Чтение приведенных выше ссылок даст вам объем проекта.

Ответ 3

В последнее время ситуация изменилась. У Apple теперь есть API расширений, доступный как часть Safari 5. Вы можете узнать больше на сайте Apple и присоединяется к программе разработчика Safari.

Расширения Safari должны быть подписаны цифровой подписью, но вы можете получить сертификат подписки от Apple. Это законный способ получить расширение в Safari, не прибегая к хакам, которые, вероятно, будут ломаться каждый раз, когда Apple обновляет Safari.

Ответ 4

Никто, похоже, даже не упомянул о том, что Safari действительно поддерживает настоящие плагины, которые, как правило, управляют менеджерами ввода, определенно не являются.

"Темы программирования подключаемого модуля WebKit" http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/

Вот как реализованы такие вещи, как поддержка содержимого PDF и Flash. Загляните в каталог /Library/Internet Plug-ins/, чтобы увидеть примеры.

Конечно, есть неотъемлемые ограничения, и вы, возможно, не сможете выполнить то, что вы надеетесь в отношении модификации пользовательского интерфейса. Плагины Safari не могут выполнять все действия, которые могут выполнять хакеры Input Manager, но они будут работать в WebKit в любом месте и в будущих версиях ОС. Примечание. Safari по умолчанию работает на 64-битной основе на Snow Leopard, поэтому менеджеры ввода не работают. Мне не хватает Safari AdBlock уже...:-( Мне бы очень хотелось, чтобы он был переписан как плагин bonafide.

Ответ 5

Есть ли способ, который позволит вам добавлять кнопки или формы в пользовательский интерфейс браузера, поскольку это невозможно с помощью диспетчера ввода или сервисного меню?

Собственно, с помощью InputManager это было бы возможно. SIMBL, обычная техника для расширений Safari, просто обертка вокруг InputManagers - это означает S mart I nput M anager B dlele L oader. Вы можете добавить материал в панель меню, на панель инструментов, диалоги в любом месте, просто добавив существующие классы Safari.

Тем не менее, написание расширений для Safari не только нетривиально, но и полностью неподдерживается. Есть некоторые относительно популярные, такие как Inquisitor (недавно приобретенные Yahoo!) и Google Gears, но по большей части это очень не похоже на расширения Firefox, которые являются официально поддерживаемой широко используемой техникой.

Вы также определенно должны учитывать специальные ограничения InputManagers на Leopard.

Ответ 6

Кроме того, чтобы отметить - Apple заявила, что InputManagers сильно ограничены как у Leopard и не будут работать в 64-битных приложениях на Apple Leopard Release Notes. Это особенно интересно, учитывая, что большинство приложений будут 64-битными в Snow Leopard (включая предположительно Safari). Apple, безусловно, пытается уничтожить InputManager как вектор для переопределения и расширения функциональности. Safari отчаянно нуждается в механизме расширения.

Ответ 7

Расширения Safari НЕ должны быть одобрены Apple. У вас просто есть сертификат разработчика (бесплатно), чтобы сделать их, но вы можете их обойти, и хотя Apple создает галерею расширений, вам не нужно распространять ее там. Как вы можете видеть, есть уже немало расширений, которые вы можете попробовать сегодня. Сертификат просто гарантирует, что он не был подделан.

http://safariextensions.tumblr.com/

Ответ 8

Если вы хотите посмотреть существующее расширение, чтобы узнать, как его сделать, загрузите его или получите из папки расширений Safari, затем измените .safariextz на .xar, затем откройте/извлеките с помощью Pacifist, чтобы просмотреть код, и если хотите добавьте его в приложение Extension Builder.