Вызов функции Firefox XUL из контекста контента - PullRequest
1 голос
/ 20 февраля 2012

Я знаю, что этот вопрос задавался ранее, но у ОП не было подходящего ответа. Итак, вопрос:

Как получить доступ к контексту страницы для вызова некоторой функции js в оверлее FF (панель инструментов в моем случае).

У меня есть <toolbarbutton> элемент с onclick="nextTrack()". nextTrack объявлено во включенном файле JS. Функция выполняется, когда я нажимаю кнопку на панели инструментов, но я не могу выполнить функцию, которая, я уверен, существует на странице.

Я не могу изменить страницу, потому что это внешний сайт, но я действительно хочу сделать свое расширение.

Конечно, я могу (и я использую) что-то вроде mainDocument.getElementById("player_play").click(), но у страницы уже есть audioPlayer объект, который обладает всеми необходимыми мне способностями: play, pause, next, prev и т.д.

Для большей чистоты я делаю расширение для управления аудиоплеером для социальной сети вконтакте (известной социальной сети в странах бывшего СССР). Так что вы можете посмотреть пример страницы здесь, может быть, это может быть полезно: http://vk.com/wall6843477_2327. Когда вы начинаете слушать панель с элементами управления, вы можете найти множество вещей, таких как audioPlayer.nextTrack(); audioPlayer.prevTrack(); и т. Д.

1 Ответ

1 голос
/ 21 февраля 2012

Вы не обращаетесь к контенту напрямую, вы скорее проходите XPCNativeWrapper .Это означает, что все свойства JavaScript, определенные страницей содержимого, являются невидимыми (что является функцией безопасности).В вашем случае самое простое безопасное решение - использовать протокол javascript::

mainDocument.defaultView.location.href = "javascript:void audioPlayer.play()";

Таким образом, вы не сможете получить результат обратно, но, похоже, вам не нужно.

...