Progress listeners: Difference between revisions

From MozillaZine Knowledge Base
Jump to navigationJump to search
(move from Dev_:_Extensions_:_Example_Code)
 
No edit summary
 
(25 intermediate revisions by 10 users not shown)
Line 1: Line 1:
==Progress Listeners==
Moved to [http://developer.mozilla.org/en/docs/Code_snippets:Progress_Listeners MDC].
Progress Listeners alllow extensions to be notified of events assosiated with documents loading in the browser and with tab switching events. Progress Listeners implement the [http://www.xulplanet.com/references/xpcomref/ifaces/nsIWebProgressListener.html nsIWebProgressListener] interface.
 
<ol><li>Create an object which implements nsIWebProgressListener:
[[Category:Redirects]]
const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START;
const STATE_STOP = Components.interfaces.nsIWebProgressListener.STATE_STOP;
var myListener =
{
  QueryInterface : function(aIID)
  {
    if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
        aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
        aIID.equals(Components.interfaces.nsISupports))
      return this;
    throw Components.results.NS_NOINTERFACE;
  },
  onStateChange:function(aProgress,aRequest,aFlag,aStatus)
  {
    if(aFlag & STATE_START)
    {
      //This fires when the load event is initiated
    }
    if(aFlag & STATE_STOP)
    {
      //This fires when the load finishes
    }
    return 0;
  },
  onLocationChange:function(aProgress webProgress , aRequest, aURI)
  {
      //This fires when the location bar changes i.e load event is confirmed or when the user switches tabs
      //return 0;
  },
  //For defnitiions of the remaining functions see XulPlanet
  onProgressChange:function(a,b,c,d,e,f){},
  onStatusChange:function(a,b,c,d){},
  onSecurityChange:function(a,b,c){},
  onLinkIconAvailable:function(a){}
}</li>
<li>Attach the progressListener to a <browser> object, e.g. for firefox:
const NOTIFY_STATE_DOCUMENT = Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT;
window.getBrowser().addProgressListener(myListener , NOTIFY_STATE_DOCUMENT);
The second argument is a [http://www.xulplanet.com/references/xpcomref/comps/c_appshellcomponentbrowserstatusfilter1.html status filter] which determines the type of events that will be recieved.</li>
</ol>

Latest revision as of 17:57, 30 January 2007

Moved to MDC.