Firefox SDK page-mod onAttach не запускается, даже если код вводится

Я разрабатываю расширение firefox, используя addon SDK 1.15, и часть его должна вставлять скрипт в http://linustechtips.com/ *. Это выдержка из моего кода:

var pageMod = require("sdk/page-mod");
var self = require("sdk/self");
var data = self.data;

pageMod.PageMod({
 include: "*.linustechtips.com",
 contentScriptFile: [data.url("linustechtips-injection.js")],
 contentScriptWhen:"ready",
 onAttach: function(worker){
 notificationQueue.push({title:"attached",text:"attached to ltt",});
 worker.port.emit("dataUrl",data.url());
 },
});

и скрипт содержимого содержит:

var dataUrl="";
self.port.on("dataUrl",function(data){dataUrl=data;setTimeout(function(){console.log(dataUrl);},5000)});
console.log("injected");

var $jq = jQuery.noConflict(); //jquery was conflicting and causing issues

Затем выполняется еще один код, но он запускается, и если он помещается в код self.port.on(...), он никогда не запускается (self.port.on(..) никогда не вызывается, потому что onAttach никогда не звонил.

Но в то время как сценарий инъецируется так, как он должен (на самом деле, по-видимому, он запускается дважды по какой-то причине), код onAttach никогда не вызывается (он должен отображать уведомление на рабочем столе и испускать data.url().)

В консоли firefox нет ошибок.

URL-адрес сайта, который я использую для тестирования, - http://linustechtips.com

1 ответ

Может предоставить более полный пример, включая скрипт контента? Этот код не будет работать как есть (вы не нуждаетесь в объекте служебных данных из собственного модуля в любом месте), и именно в сценарии содержимого вам нужно будет прослушивать события, отправленные через worker.port.emit, используя self.port.on в скрипте содержимого. Подробнее об этом:

https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts

licensed under cc by-sa 3.0 with attribution.