2016-03-28 3 views
0

Мы хотели бы распространять наше расширение Chrome, используя встроенные установки с веб-сайтов наших партнеров. И мы хотели бы узнать изнутри расширения, на котором он был установлен. Есть ли способ вставить параметр во время процесса установки и получить его внутри расширения? Спасибо заранее.Есть ли способ передать параметр в расширение Chrome?

ответ

1

Нет прямого способа сделать это в встроенном API-интерфейсе хром, однако есть способ подключить его, что требует некоторой работы.

По сути вам нужно 2 вещи:

  1. способность знать, когда расширение хром установка имеет успешно для расширения на сайте партнера.
  2. Механизм с сайта партнера, чтобы отправить сообщение на ваш chrome .

1-ая легкая и часть хром-интерфейса установки, просто используйте функцию successCallback для API установки, как указано в here.

Теперь, когда у вас есть момент времени, когда вы знаете, что установка произошла, получение URL-адреса на вашем добавочном номере является запутанным. Самый простой способ сделать это - отправить пользовательское событие javascript с URL-адресом в данных события на узел (документ работает отлично для этого), а затем в вашем расширении вы можете прослушивать документ для этого настраиваемого типа события. Затем в обработчике событий вы получите URL-адрес.

Но это легкая часть. Сложная часть заключается в том, что ваши скрипты содержимого не будут находиться на вкладке, с которой вы только что установили. Если у вас есть контент-скрипты в вашем расширении, которые загружаются при каждой загрузке страницы, они будут загружаться только при загрузке каждой страницы после установки. Так что вы установили страницу? Вы не получите расширение, которое прослушивает эту страницу, пока вы ее не обновите.

Я могу придумать ряд решений для этого, и ни один из них не является замечательным. Во-первых, если на ваших сайтах-партнерах им не против, чтобы вы вставляли URL-адрес, вы могли бы добавить хэш (если бы не было хэша) с флагом, означающим, что ваше расширение только что установлено. Затем вы можете использовать API-интерфейсы вкладок chrome, чтобы найти URL-адрес текущей активной вкладки в текущем активном окне. Читая, что при загрузке вашего расширения, если у него есть слово «# extensionInstallId =», вы могли бы предположить, что это расширение только что установлено из этого URL-адреса и запишет его. Это не является надежным, потому что, если человек оставляет эту вкладку открытой, когда они снова открывают браузер, вы получите ложный результат и получите 2 установочных события, когда их будет только один. Я полагаю, вы могли бы даже сохранить флаг в localStorage для расширения и проверить, действительно ли он действительно установлен.

Вторая задача - сделать что-то вроде this. Это грязно, потому что оно создаст новое всплывающее окно (только с единственной целью отправить это событие на ваше расширение).

+0

альтернативным способом может быть использование истории api для поиска недавно посещенного URL-адреса партнера. –

Смежные вопросы