On page load: Difference between revisions

From MozillaZine Knowledge Base
Jump to navigationJump to search
(this works different on trunk)
(moved to MDC)
Line 1: Line 1:
{{extdev}}
{{extdev}}


This article is for XUL/JavaScript developers who want to have their code executed each time a new page is loaded in browser/mail.


==Creating an overlay==
First, you need to create an overlay to one (or more, depending on which applications you target) of the following XUL documents:
{| border="1" cellpadding="5" rules="all"
! Application !! URI to overlay
|-
| Firefox || <code>chrome://browser/content/browser.xul</code>
|-
| Thunderbird and Mozilla Mail || <code>chrome://messenger/content/messenger.xul</code>
|-
| Navigator from the Mozilla Suite || <code>chrome://navigator/content/navigator.xul</code>
|}


==Attaching a script==
Article moved to [http://developer.mozilla.org/en/docs/Code_snippets:On_page_load MDC].
Attach a script to your overlay, and add a <code>load</code> event listener to <code>appcontent</code> element (browsers) or <code>messagepane</code> (mail) by putting this code in the script:


<pre>window.addEventListener("load", function() { myExtension.init(); }, false);
var myExtension = {
  init: function() {
    var appcontent = document.getElementById("appcontent");  // browser
    if(appcontent)
      appcontent.addEventListener("load", this.onPageLoad, true);
    var messagepane = document.getElementById("messagepane"); // mail
    if(messagepane)
      messagepane.addEventListener("load", this.onPageLoad, true);
  },
  onPageLoad: function(aEvent) {
    var doc = aEvent.originalTarget; // doc is document that triggered "onload" event
    // do something with the loaded page.
    // doc.location is a Location object (see below for a link).
    // You can use it to make your code executed on certain pages only.
    if(doc.location.href.search("forum") > -1)
      alert("a forum page is loaded");
  }
}
</pre>
Current Firefox trunk nightlies will fire the onPageLoad function for not only documents, but xul:images (favicons in tabbrowser). If you only want to handle documents, ensure aEvent.originalTarget.nodeName == "#document" [https://bugzilla.mozilla.org/show_bug.cgi?id=329514].
==References==
* See Chris Neale's URIid extension for a working example.
* If you need to have a more complicated listener (not just onload), use [[progress listeners]].
* [http://xulplanet.com/references/objref/Location.html Location object]


[[Category:Example code|On tab load]] [[Category:JavaScript example code|On tab load]]
[[Category:Example code|On tab load]] [[Category:JavaScript example code|On tab load]]

Revision as of 17:13, 30 January 2007

This page is part of the extension development documentation project.

Ask your questions in MozillaZine Forums. Also try browsing example code.

Note: development documentation is in process of being moved to Mozilla Development Center (MDC).


Article moved to MDC.