Вопрос

Я хочу, чтобы при каждой загрузке страницы в Safari выполнялся лично разработанный код JavaScript.Похоже, это делает addblock для Safari.Кто-нибудь знает, как это сделать?

Safari не является расширяемым.Для этого нет дополнительной структуры.Тем не менее, для него доступен блокировщик рекламы и множество других дополнений, хотя разработчики Apple Webkit и Safari отговаривают пользователей от их использования, называя их «бинарными хаками».Кажется, что некоторые из этих дополнений используют InputManager, который вообще нигде не документирован, по крайней мере, из-за того, как люди используют его для загрузки скриптов в Safari.Думаю, мне придется заняться обратным проектированием, чтобы увидеть, как addblock это делает, но прежде чем я это сделаю, я решил спросить здесь.Кто-нибудь знает?

Это было полезно?

Решение

Менеджеры ввода — это широко используемый (не)используемый способ внедрения произвольного кода в среду выполнения другого приложения.Как только вы окажетесь там, вам придется провести реверс-инжиниринг самого приложения, чтобы выяснить, как добиться желаемого поведения;обычно это включает в себя смену методов для замены частей приложения, которое вы взламываете.Это не документировано, потому что нет API для документирования, но вы можете узнать об отдельных частях (как написать диспетчер ввода в целом, как работает переключение методов в Objective C, как использовать такие инструменты, как дамп классов), а затем разместить все это вместе.

Однако то, что вы описываете, похоже на Greasemonkey, и уже существует как минимум один или два хака, позволяющих включить поведение, подобное Greasemonkey, в Safari.Я бы посоветовал сначала посмотреть, соответствует ли один из них вашим потребностям.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top