知我者谓我心忧,不知我者谓我何求。 顺天命者,悲;逆,亡?

alexa的firefox插件sparky摘要

2008-03-26 11:09:45 / 个人分类:备忘

邦定函数
window.addEventListener( "load", function(event) { AlexaSparkline.init(); }, false );

初始化
init: function()
  {
    this.dnsService = Components.classes["@mozilla.org/network/dns-service;1"].getService( Components.interfaces.nsIDNSService );
    this.urlService = Components.classes["@mozilla.org/network/io-service;1"].getService( Components.interfaces.nsIIOService );
    this.sessionService = Components.classes["@mozilla.org/browser/sessionstore;1"].getService( Components.interfaces.nsISessionStore );
    this.datafeed = this.resolveEndpoint( this.baseline );

    var items = document.getElementById("alexa-statusbar")
                        .getElementsByAttribute("class","alexa-statusbar-toggle")
                        ;
    for ( var i = 0 ; i < items.length ; ++i ) { this.setHidden(items[i]); }

    window.addEventListener( "focus", function(event) { if (window.content) AlexaSparkline.update(window.content.document.location,getBrowser().selectedTab); }, true );
    window.addEventListener( "select", function(event) { if (window.content) AlexaSparkline.update(window.content.document.location,getBrowser().selectedTab); }, true );
  }
};

最后两行是处理focus和select时间,我们关心focus的过程。
先看update
  update: function(url,tab)
  {
    if ( url === this.lastUrlUpdated ) return; else this.lastUrlUpdated = url;
    url = this.okUrl(url);
    this.updateFuzzyMenu(url);
    this.updateSparkline(url);
    this.updateXml(url,tab,this.renderXml);
  },
我们关注的是updateSparkline,看看他做了什么。
updateSparkline: function(url)
  {
    try
    {
      if ( url && this.isAlexa(url) && url.path )
      {
        var idx = url.path.indexOf('?');
        if ( idx > -1 )
        {
          var parameters = this.parameterize(url.path.substr(idx));
          if (parameters['url'])
          url = this.urlService.newURI(
                                        parameters['url'].match(/^https?:\/\//i)
                                      ? parameters['url']
                                      : "http://".concat( parameters['url'] )
                                      , undefined
                                      , null
                                      );
        }
      }
    } catch(ex) { }
    var hostname = this.getHost(url);
    var src = this.isAlexaHost(hostname) ? "chrome://alexastatusbar/skin/installed.png"
            : hostname                   ? "http://widgets.alexa.com/traffic/sparky/?url="
                                         + encodeURIComponent( hostname )
            : /* else */                   "chrome://alexastatusbar/skin/default.png"
            ;
    var img = document.getElementById("alexa-statusbar-sparkline");
    if ( img && img.src != src ) img.src = src;
  },
看来只是获取信息,在访问统计上的功能只有IE下的插件才有。

TAG: 备忘

我来说两句

-5 -3 -1 - +1 +3 +5

Open Toolbar