Как добавить javascript на страницу из дополнения Firefox и запустить его? - PullRequest
4 голосов
/ 21 мая 2010

Я пишу расширение Firefox (дополнение), чтобы пользователи могли комментировать любую страницу с текстом и / или рисунками, а затем сохранять изображение страницы, включая аннотации. Варианты использования: клиенты просматривают веб-страницы, добавляют обратную связь на страницу, сохраняют изображение и отправляют его по электронной почте веб-разработчику или тестерам, делая аннотированные снимки экрана с ошибками графического интерфейса и т. Д.

Я написал функциональность аннотации / рисования в javascript перед разработкой расширения. Этот скрипт добавляет элемент <canvas> на страницу для рисования, а также панель инструментов (в <div>), которая содержит кнопки (каждый элемент <canvas>) для различных инструментов рисования, например. линия, прямоугольник, эллипс, текст и т. д. Это прекрасно работает, если вручную включить страницу.

Мне нужен способ расширения до:

  1. Вставьте этот скрипт в любую страницу, включая страницы, которые я не контролирую.
  2. Это должно произойти, когда пользователь вызывает расширение, которое может быть после загрузки страницы.
  3. После внедрения в этот сценарий необходимо выполнить функцию init(), которая добавляет элементы холста, панели инструментов и т. Д., Но я не могу определить, как это вызвать из расширения.

Обратите внимание, что после введения мне не нужен этот скрипт для взаимодействия с расширением (поскольку расширение просто делает снимок экрана всего документа (и удаляет добавленные элементы страницы), когда пользователь нажимает кнопку сохранения в расширении Chrome ).

Ответы [ 2 ]

10 голосов
/ 10 декабря 2010

Вот так я решил свою проблему, установив атрибут onload для вызова функции init в сценарии, который добавляется на страницу.

var myScript = top.window.content.document.createElement('script');
myScript.type = 'text/javascript';
myScript.setAttribute('src','chrome://path/to/script.js');
myScript.setAttribute('onload', 'firefoxInit()');
top.window.content.document.getElementsByTagName('head')[0].appendChild(myScript);
1 голос
/ 09 декабря 2010

Используйте расширение Greasemonkey :

Позволяет настроить способ отображения или поведения веб-страницы с помощью используя небольшие кусочки JavaScript.

Сотни скриптов для самых разных популярных сайтов уже доступно на http://userscripts.org.

Вы также можете писать свои собственные сценарии. Проверять, выписываться http://wiki.greasespot.net/, чтобы начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...