MozillaZine

Dev : Extensions : Example Code

From MozillaZine Knowledge Base

(Difference between revisions)
Revision as of 21:54, 26 July 2004
Jgraham (Talk | contribs)
(Add prefs link and ProgressListeners)
<-- Previous diff
Revision as of 10:58, 27 July 2004
Asqueella (Talk | contribs)

Next diff -->
Line 44: Line 44:
window.getBrowser().addProgressListener(myListener , 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. 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.
 +
 +==Other==
 +[[Dev : Extensions : Example Code : Adding items to menus]]

Revision as of 10:58, 27 July 2004

Preferences

XulPlanet has an article on preferences

Progress Listeners

Progress Listeners alllow extensions to be notified of events assosiated with documents loading in the browser and with tab switching events. Proogres Listeners implement the nsIWebProgressListener interface.

  1. Create an object which implements nsIWebProgressListener:
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){}
}
  1. 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 status filter which determines the type of events that will be recieved.

Other

Dev : Extensions : Example Code : Adding items to menus