Chris Pollett > Students >

    ( Print View )


    [Project Blog]

    [CS297 Proposal]

    [Deliverable 1 - Hello World Extension]

    [Presentation on XUL-PPT]

    [Deliverable2 - Capture Events]

    [Deliverable3 - Preferences]

    [Deliverable4 - Caching]

    [CS297 Report - PDF]

    [CS298 Proposal]

    [CS298 Report - PDF]

    [CS298 Presentation- PPT]

    [Download Project-ZIP]

    [Installation Guide]


CS297 Proposal

CS298 Proposal

Total Recall for AJAX Applications - an extension to Firefox

Smita Periyapatna (

Advisor: Dr. Chris Pollett

Committee Members: Dr.Araya and Dr.Stamp


In AJAX, most of the action takes place inside a single page. When an AJAX page is loaded, new instance of JavaScript objects are created. When you leave that page and go to some other page like say Yahoo, the JavaScript objects are completely wiped out. When you hit the back button, the page actually reloads completely. All the objects are lost and this can be pain. First, it is something that not all programmers are aware of, which can lead to errors, so it is important to know about. Second, users see their state completely wiped out; when they go back to their AJAX application with the back button, they see the original state of their program, not the last place they left it. Third, this can affect performance, since the AJAX application has to re-retrieve everything from the server rather than use its local state. My project aims to solve the above-mentioned problems. I propose to build an extension for Mozilla Firefox browser which extends the functionality of the browser to save the states of an AJAX page.This will allow users to go back to the last place they left, instead of going to the original state of their AJAX application. It would also check if some states were already saved in the history item, if they were, then those states would not be saved. My extension will allow users to set a time interval at which they want to save the states of a page.

CS297 Results

1. Created a sample Hello World extension to test the extension functionality.

2. Captured events in a DOM tree and displayed an alert message when the event was captured.

3. Created a Preference system to select between different choices.

4. Cached pages for a single tab browser at different time intervals.


Week 1(26 Aug, 2008 - 1 Sep, 2008)Prepare 298 proposal
Week 2-4(2 Sep, 2008 - 15 Sep, 2008)Fix caching of pages with images
Week 5-7(16 Sep, 2008 - 6 Oct, 2008)Implement caching with tabbed browser
Week 8(7 Oct, 2008 - 13 Oct, 2008)Cache pages which are implemented using Flash.
Week 9-11(14 Oct, 2008 - 3 Nov, 2008)Test the above application and make it more robust.
Week 12(4 Nov, 2008 - 10 Nov, 2008)Work on writing the report
Week 13-15(11 Nov, 2008 - 24 Nov, 2008)Submit CS298 report.
Week 16(25 Nov, 2008 - 3 Dec, 2008)Final Presentation.

Key Deliverables:

  • Software
  • 1. Deliverable_1: In CS297 the browsing of cached pages was successful using micro back/forward controls implemented for this project.But the browsing of pages with images was not supported.In CS298 I will implement the caching and browsing of pages with images.

    2. Deliverable_2: In CS297 the caching of pages and browsing of saved pages was done only for single tab browser. In CS298 it would be done for multiple tabbed browser.

    3. Deliverable_3: Implementing caching of pages for pages written in Flash.

  • Report
  • Final Report and Presentation.

Innovations and Challenges

  • The final application will have four buttons to control history: start, stop, back, and forward. Users can start and stop caching pages with the start and stop buttons or browse the saved items with the back and forward buttons. Keeping the back/forward button pressed will display the cached pages as a slide show.
  • The micro history controls works fine in case of single tab browser, but in case of multiple tabbed browser caching and browsing would be difficult.Organizing the data in the cache from all new windows and keeping track of all the back and forward clicks. Also we have to keep a tab on the memory being utilised in the cache.
  • The challenging part would be in caching pages implemented using Flash.The implementation will be limited to only scriptable Flash objects. Events fired to the Flash objects will have to be captured before it reaches the object.


[2007] Official page of Mozilla. ""

[2007] Programming Firefox: Building Rich Internet Applications with XUL. Kenneth C. Feldt. O'Reilly. 2007.

[2007] JavaScript and DHTML Cookbook: Danny Goodman. O'Reilly. 2007.

[2007] Official page of Backbase. ""