邦定函数
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下的插件才有。