2013-11-19 3 views
1

Я пишу расширение firefox xul, и у меня должно быть взаимодействие между веб-страницей и расширением.взаимодействие между firefox xul estension и веб-страницей

Пример: Если я нажму ссылку со страницы, я хочу вызвать функцию в расширении xul. Кто-нибудь знает, есть ли способ?

Большое спасибо

ответ

1

Да, вы можете сделать это. Вам нужно получить доступ к содержимому страницы с помощью объекта content.

В коде расширения вы можете выбрать все ссылки, а затем добавить EventListener:

allLinks = content.document.getElementsByTagName("a"), 

for (var i=0, il=allLinks.length; i<il; i++) { 
    elm = allLinks[i]; 
    elm.addEventListener("click", nowclicked, false); 
} 

И тогда слушатель событий будет выглядеть примерно так:

nowclicked : function() { 
    alert("a linked was clicked!"); 
} 

Если вам нужен рабочий пример, Я изменил расширение Link Target Finder от Robert Nyman, чтобы добавить оповещение при нажатии ссылок. Модифицированный код находится в linkTargetFinder.js.

+0

ммм, у меня есть несколько вопросов. Могу ли я иметь мою ссылку: Photo Userlist что я должен написать в .js файла шахтного расширения? вместо предупреждения («ссылка»); могу ли я написать retrivePhoto(); –

+0

Я не совсем понимаю, что вы пытаетесь сделать. Вы хотите предоставить расширение для доступа к фактической фотографии (данные двоичного изображения), которая находится по ссылке? – christi3k

+0

извините, что я не могу говорить по-английски очень хорошо Что я хочу сделать, так это позвонить с веб-страницы, что я создаю функцию моего расширения firefox, а не функцию в файле, который я импортирую внутри страницы , но .js, которые я создаю для моего расширения –

0

См. Пример MDN для Sending data from unprivileged document to chrome document.

В основном, в вашем хромом код, который вы должны добавить слушателя:

// The last value is a Mozilla-specific value to indicate untrusted content is allowed to trigger the event. 
document.addEventListener("MyExtensionEvent", function(e) {myExtension.myListener(e);}, false, true); 

и огонь событие из скрипта содержимого. Обратите внимание, что документ в следующем является contentDocument не XulDocument

var evt = document.createEvent("Events"); 
evt.initEvent("MyExtensionEvent", true, false); 
element.dispatchEvent(evt); 
Смежные вопросы