Labs/Jetpack/Reboot/JEP/108: Difference between revisions
Dandonkulous (talk | contribs) |
Dandonkulous (talk | contribs) No edit summary |
||
Line 32: | Line 32: | ||
<b>Description:</b> | <b>Description:</b> | ||
Allows you to run code in the DOM Worker's window context | Allows you to run code in the DOM Worker's window context. | ||
<b>Arguments:</b> | <b>Arguments:</b> | ||
Line 65: | Line 65: | ||
==== Background Page Method: <i>empty</i> ==== | ==== Background Page Method: <i>empty</i> ==== | ||
<b>Description:</b> | |||
Empties the DOM Worker's of all elements (this includes the body, which is then reinserted fresh). | |||
<b>Arguments:</b> | <b>Arguments:</b> | ||
Line 81: | Line 84: | ||
==== Background Page Method: <i>reset</i> ==== | ==== Background Page Method: <i>reset</i> ==== | ||
<b>Description:</b> | |||
Resets the DOM Worker to a blank HTML page with no elements and a clean global window object. | |||
<b>Arguments:</b> | <b>Arguments:</b> |
Revision as of 23:07, 24 February 2010
JEP 108 - Background Page
- Champion: Daniel Buchner - daniel@mozilla.com
- Status: Under Review
- Bug Ticket: 546740
- Type: API
Proposal
Background Pages are like a more open and free sandbox for doing most anything in a traditional web page with a DOM context, but with a key difference: the page is augmented with escalated, waterfall chrome privileges. It is essentially along the same line of a Web Worker, just more open and accessible.
Use-Cases
1. Google Maps API Data If you wanted to utilize the data available via Google Maps API, you would need to instantiate the API's script within the context of a DOM. This is due to Google Maps reliance on the elements and script it pulls in to make data fetching possible. I might want to have a Jetpack that searches the page for addresses and business titles allowing the user to mouseover those items and view geolocalized details about such places in a tooltip.
2. Native Type Proxy & DOM-Reliant Script Execution Environment It is almost a certainty that developers will want to use their js library of choice to interact with web content. To enable this more easily, they could use this JEP's DOM as a Native Type proxy and as the primary location to instantiate their DOM dependent code.
Dependencies & Requirements
- We must be able to give the code in the top window of this page chrome privileges that are strictly one-way/descending in nature.
- Dynamically generated code sent to the Background Page should be injected and executed in the Background Page's window context.
Internal Methods
- TBD
API Methods
Background Page Global: $dom
Background Page Method: run
Description:
Allows you to run code in the DOM Worker's window context.
Arguments:
- options - (object)
- bind: (mixed) a variable that will be bound as the 'this' keyword in the function
- arguments: (array) an array of mixed variables passed as the function arguments
- timeout: (number) a number that is used to set the timeout duration
- interval: (number) a number that is used to set the interval duration
- action - (function) a function to be executed within the DOM of the Background Page - by default, the Background Page's window object is the bound 'this' within the function
Returns:
user defined return value - The function's return value as specified by the user
or
If timeout or interval options are used:
array - an array whose first item is the function's user defined return value, and second is a variable the user can save to clear the timing event
Notes:
Examples:
$dom.run({ interval: 10000 }, function(){ return window.location; });
Background Page Method: empty
Description:
Empties the DOM Worker's of all elements (this includes the body, which is then reinserted fresh).
Arguments:
This method takes no arguments
Returns:
The Background Page Global object: $dom
Examples:
$dom.empty();
Background Page Method: reset
Description:
Resets the DOM Worker to a blank HTML page with no elements and a clean global window object.
Arguments:
No arguments are used in accordance with this method
Returns:
The Background Page Global object: $dom
Examples:
$dom.reset();