Как мне общаться с внешним миром из расширения Safari? - PullRequest
1 голос
/ 25 августа 2011

Как я могу сообщить запущенному процессу, что в Safari нажали контекстное меню?

Я читал, что это невозможно из-за безопасности, но это кажется неправильным, потому что 1Password каким-то образом вытягивает всю информацию из базы данных настольного приложения в расширение Safari. Я написал расширение для отображения контекстного меню и пытался отправить запрос XMLRPC на localhost, но не смог заставить его работать.

Ответы [ 2 ]

1 голос
/ 16 октября 2011

Хотя я понятия не имею о реализации 1Password, LiveReload достигает того же с помощью WebSocket для подключения к локальному URL-адресу (обрабатывается приложением).Если вы делаете это с глобальной страницы, междоменные ограничения не применяются, поэтому вы можете свободно подключаться к любому URL:

var ws = new WebSocket("ws://localhost:98765");
...

(будьте осторожны с этим локальным хостом, хотя Chrome на Linux хочет0.0.0.0 вместо 127.0.0.1 или localhost. По крайней мере, раньше он хотел.)

1 голос
/ 26 августа 2011

Я не уверен в этом, но я думаю, что 1Password делает то, что делает, поскольку фоновый процесс (1PasswordAgent) постоянно опрашивает на предмет определенных изменений в локальной базе данных расширения и / или файлах конфигурации.Например, чтобы изначально получить ваши пароли в расширение, расширение может установить определенный флаг в своей базе данных localStorage, который будет записан (Safari, а не расширением) в файл.Затем агент заметит флаг в файле и скопирует ваши пароли из основной базы данных 1Password в локальную базу данных расширения.Точно так же, когда расширение создает новую запись пароля, агент заметит изменение в базе данных расширения и отразит его в базе данных 1Password.

Возможно, вы могли бы сделать что-то подобное?

...