Как два расширения Safari могут взаимодействовать друг с другом?

Платформа расширения Safari явно не поддерживает передачу сообщений между расширениями. Я ищу работающий хак, чтобы обойти это, не сообщая странице о том, что расширения запущены.

Предложения (не проверено):

  1. Одно расширение открывает скрытую вкладку для канала about:blank#extension-channel с помощью openTab(). Другой ищет эту вкладку по URL-адресу и находит ее. Они производят и потребляют элементы на этой странице для общения.

  2. Если расширения могут считывать файлы cookie из разных доменов, одно из них устанавливает файл cookie со случайным идентификатором на extension-homepage.com, а другое считывает его. Затем они создают DOM-события с именем extension-message-[the random ID]", поэтому страница не может их прослушивать.

  3. Попросите разработчиков Safari добавить onRequestExternal в их API;)

Можете ли вы придумать другой подход? У вас получилось что-то из вышеперечисленного?


person Michael Gundlach    schedule 17.04.2012    source источник
comment
Я не пробовал это сам, но может помочь window.postMessage ?   -  person chulster    schedule 18.04.2012


Ответы (2)



Пусть расширение A открывает WebSocket соединение с сервером WebSocket, реализованным в Javascript расширением B. См. socket.io, WebSocket-Node и т. д. Обеспечивает надежную двустороннюю связь между двумя расширениями или между расширением и внешним миром.

person Community    schedule 09.05.2012