【问题标题】:Firefox extension: even listener to changes inside a panelFirefox 扩展:面板内更改的事件监听器
【发布时间】:2013-03-13 04:00:31
【问题描述】:

我需要一些帮助:

  • 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

            });

        };

【问题讨论】:

  • 为什么不思考并提出具体问题?
  • 对不起!我刚刚编辑了我的问题

标签: javascript firefox firefox-addon firefox-addon-sdk


【解决方案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);
});

【讨论】:

  • 非常感谢!我会给你代表,但我不能投票我在这个社区太绿了:)
猜你喜欢
  • 2013-11-30
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 2018-11-21
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 2014-01-11
相关资源
最近更新 更多