Index: chrome/common/extensions/docs/server2/templates/articles/background_pages.html |
diff --git a/chrome/common/extensions/docs/server2/templates/articles/background_pages.html b/chrome/common/extensions/docs/server2/templates/articles/background_pages.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7a7d6c83c6777ab488f8ddc47481d5de0f4e8e92 |
--- /dev/null |
+++ b/chrome/common/extensions/docs/server2/templates/articles/background_pages.html |
@@ -0,0 +1,160 @@ |
+<h1>Background Pages</h1> |
+ |
+ |
+<p id="eventPageWarning" class="warning"> |
+ <em>Caution:</em> Consider using event pages instead. |
+ <a href="event_pages.html">Learn more</a>. |
+</p> |
+ |
+<p> |
+A common need for extensions is to have |
+a single long-running script to manage some task or state. |
+Background pages to the rescue. |
+</p> |
+ |
+<p> |
+As the <a href="overview.html#arch">architecture overview</a> explains, |
+the background page is an HTML page that runs in the extension process. |
+It exists for the lifetime of your extension, |
+and only one instance of it at a time is active. |
+</p> |
+ |
+<p> |
+In a typical extension with a background page, |
+the UI — |
+for example, the browser action or page action |
+and any options page — |
+is implemented by dumb views. |
+When the view needs some state, |
+it requests the state from the background page. |
+When the background page notices a state change, |
+the background page tells the views to update. |
+</p> |
+ |
+<h2 id="manifest">Manifest</h2> |
+ |
+<p> |
+Register your background page in the |
+<a href="manifest.html">extension manifest</a>. |
+In the common case, a background page |
+does not require any HTML markup. |
+These kind of background pages can be |
+implemented using JavaScript files alone, |
+like this: |
+</p> |
+ |
+<pre>{ |
+ "name": "My extension", |
+ ... |
+ <b>"background": { |
+ "scripts": ["background.js"] |
+ }</b>, |
+ ... |
+}</pre> |
+ |
+<p> |
+A background page will be generated |
+by the extension system |
+that includes each of the files listed |
+in the <code>scripts</code> property. |
+</p> |
+ |
+<p> |
+If you need to specify HTML |
+in your background page, you can |
+do that using the <code>page</code> |
+property instead: |
+</p> |
+ |
+<pre>{ |
+ "name": "My extension", |
+ ... |
+ <b>"background": { |
+ "page": "background.html" |
+ }</b>, |
+ ... |
+}</pre> |
+ |
+<p> |
+If you need the browser to start up early—so |
+you can display notifications, for example—then |
+you might also want to specify the |
+<a href="manifest.html#permissions">"background" permission</a>. |
+</p> |
+ |
+ |
+<h2>Details</h2> |
+ |
+<p> |
+You can communicate between your various pages using direct script calls, |
+similar to how frames can communicate. |
+The <a href="extension.html#method-getViews"><code>chrome.extension.getViews()</code></a> method |
+returns a list of window objects |
+for every active page belonging to your extension, |
+and the |
+<a href="extension.html#method-getBackgroundPage"><code>chrome.extension.getBackgroundPage()</code></a> method |
+returns the background page. |
+</p> |
+ |
+<h2 id="example">Example</h2> |
+ |
+<p> |
+The following code snippet demonstrates |
+how the background page |
+can interact with other pages in the extension. |
+It also shows how you can use |
+the background page to handle events |
+such as user clicks. |
+</p> |
+ |
+<p> |
+The extension in this example |
+has a background page |
+and multiple pages created |
+(with |
+<a href="tabs.html#method-create"><code>chrome.tabs.create()</code></a>) |
+from a file named <code>image.html</code>. |
+ |
+</p> |
+ |
+<pre> |
+<em>//In background.js:</em> |
+// React when a browser action's icon is clicked. |
+chrome.browserAction.onClicked.addListener(function(tab) { |
+ var viewTabUrl = chrome.extension.getURL('image.html'); |
+ var imageUrl = <em>/* an image's URL */</em>; |
+ |
+ // Look through all the pages in this extension to find one we can use. |
+ var views = chrome.extension.getViews(); |
+ for (var i = 0; i < views.length; i++) { |
+ var view = views[i]; |
+ |
+ // If this view has the right URL and hasn't been used yet... |
+ if (view.location.href == viewTabUrl && !view.imageAlreadySet) { |
+ |
+ // ...call one of its functions and set a property. |
+ view.setImageUrl(imageUrl); |
+ view.imageAlreadySet = true; |
+ break; // we're done |
+ } |
+ } |
+}); |
+ |
+<em>//In image.html:</em> |
+<html> |
+ <script> |
+ function setImageUrl(url) { |
+ document.getElementById('target').src = url; |
+ } |
+ </script> |
+ |
+ <body> |
+ <p> |
+ Image here: |
+ </p> |
+ |
+ <img id="target" src="white.png" width="640" height="480"> |
+ |
+ </body> |
+</html> |
+</pre> |