2013-03-07 51 views
0

我想这个一些帮助:从外部网站 Firefox扩展:甚至监听器在面板内部的变化

  • 内容

    • Firefox扩展打开面板,负载如何听里面的面板的变化内容?它是动态的,不断更新的
    • 当变化发生,火浏览器内置的通知(喜欢的东西“有一些新闻!”)

    下面是一些代码(抱歉,但我挺小白):

    var Widget = require("widget").Widget; 
    
    var tabs = require('tabs'); 
    
    exports.main = function() { 
    
         data = require("self").data 
    
         var Panel = require("panel").Panel({ 
           width:1000, 
           height:630, 
           contentURL: "http://mysite.com/news.html", 
         }); 
    
         require("widget").Widget({ 
           id: "News", 
           label: "News", 
           contentURL: "http://mysite.com/images/favicon.ico", 
           panel: Panel 
    
          }); 
    
         }; 
    
  • +2

    为什么不能有一个思考,问一个具体问题? – 2013-03-07 04:05:00

    +0

    对不起!我刚编辑我的问题 – Etruscos 2013-03-07 09:54:34

    回答

    1

    你会想一些contentScript注入页面(http://mysite.com/news.html)和监视通过该脚本的变化。当您看到要更改的内容时,只需将消息发送到面板即可通知该更改的附加组件。

    我会从注释的文档的例子,

    // this could be listening to any event happening in the page 
    var myScript = "window.addEventListener('click', function(event) {" + 
           " var t = event.target;" + 
           " if (t.nodeName == 'A')" + 
            // this self.port.emit is what sends the 'click-link' signal 
            // to your add-on code 
           " self.port.emit('click-link', t.toString());" + 
           "}, false);" 
    
    var panel = require("sdk/panel").Panel({ 
        contentURL: "http://mysite.com/news.html", 
        // !!! use contentScriptFile, this is just for small inline stuff 
        contentScript: myScript 
    }); 
    
    // this is how your add-on listens for the 'click-link' signal, but it could be any signal name you want 
    panel.port.on("click-link", function(url) { 
        // here is where you fire the "There are some news!" event in the browser 
        console.log(url); 
    }); 
    
    +0

    非常感谢!我会给你代表,但我不能投票我在这个社区太绿色:) – Etruscos 2013-05-29 09:16:39