diff options
Diffstat (limited to 'chrome/common/extensions/docs/faq.html')
-rw-r--r-- | chrome/common/extensions/docs/faq.html | 312 |
1 files changed, 197 insertions, 115 deletions
diff --git a/chrome/common/extensions/docs/faq.html b/chrome/common/extensions/docs/faq.html index 245567f..4304f18 100644 --- a/chrome/common/extensions/docs/faq.html +++ b/chrome/common/extensions/docs/faq.html @@ -330,27 +330,37 @@ try the <h4>General</h4> <ul> <li><a href="#faq-gen-01">What are Google Chrome Extensions?</a></li> + <li><a href="#faq-dev-01">How can I set up Chrome for extension development?</a></li> <li><a href="#faq-gen-02">What technologies are used to write extensions for Chrome?</a></li> <li><a href="#faq-gen-03">Are extensions fetched from the web every time the browser is loaded?</a></li> + <li><a href="#faq-dev-14">How do I determine which version of Chrome is deployed to which channel?</a></li> </ul> - <h4>Development</h4> + <h4>Capabilities</h4> <ul> - <li><a href="#faq-dev-01">How can I set up Chrome for extension development?</a></li> - <li><a href="#faq-dev-02">Can I make cross-domain Ajax requests in an extension?</a></li> - <li><a href="#faq-dev-03">Can I use 3rd party web services in my extension?</a></li> - <li><a href="#faq-dev-04">Can I use OAuth in my extensions?</a></li> - <li><a href="#faq-dev-05">What UI controls can I create for my extension?</a></li> - <li><a href="#faq-dev-06">Can I load DLLs in my extension?</a></li> + <li><a href="#faq-dev-02">Can extensions make cross-domain Ajax requests?</a></li> + <li><a href="#faq-dev-03">Can extensions use 3rd party web services?</a></li> <li><a href="#faq-dev-07">Can extensions encode/decode JSON data?</a></li> - <li><a href="#faq-dev-08">Can I store data locally in my extension?</a></li> - <li><a href="#faq-dev-09">How much data can I store in localStorage?</a></li> - <li><a href="#faq-dev-10">Can I create an options menu for my application?</a></li> - <li><a href="#faq-dev-11">Can two extensions communicate with each other?</a></li> - <li><a href="#faq-dev-12">What debugging tools are available to extension developers?</a></li> + <li><a href="#faq-dev-08">Can extensions store data locally?</a></li> + <li><a href="#faq-dev-04">Can extensions use OAuth?</a></li> + <li><a href="#faq-dev-06">Can extensions load DLLs?</a></li> + <li><a href="#faq-dev-05">Can extensions create UI outside of the rendered web page?</a></li> + <li><a href="#faq-interact-chrome">Can extensions listen to clicks on Chrome tabs and navigation buttons?</a> + </li><li><a href="#faq-dev-11">Can two extensions communicate with each other?</a></li> <li><a href="#faq-dev-13">Can extensions use Google Analytics?</a></li> - <li><a href="#faq-dev-14">How do I determine which version of Chrome is deployed to which channel?</a></li> - <li><a href="#faq-dev-15">Can I add a content script to chrome:// URLs?</a></li> + <li><a href="#faq-dev-15">Can extensions modify chrome:// URLs?</a></li> + <li><a href="#faq-open-popups">Can extensions open browser/page action popups without user interaction?</a></li> + <li><a href="#faq-persist-popups">Can extensions keep popups open after the user clicks away from them?</a></li> + <li><a href="#faq-lifecycle-events">Can extensions be notified when they are installed/uninstalled?</a></li> + </ul> + <h4>Development</h4> + <ul> + <li><a href="#faq-building-ui">How do I build a UI for my extension?</a> + </li><li><a href="#faq-dev-09">How much data can I store in localStorage?</a></li> + <li><a href="#faq-dev-10">How do I create an options menu for my application?</a></li> + <li><a href="#faq-dev-12">What debugging tools are available to extension developers?</a></li> <li><a href="#faq-dev-16">Why do wildcard matches not work for top level domains (TLDs)?</a></li> + <li><a href="#faq-management">Why does the management API not fire events when my extension is installed/uninstalled?</a></li> + <li><a href="#faq-firstrun">How can an extension determine whether it is running for the first time?</a></li> </ul> <h4>Features and bugs</h4> <ul> @@ -368,6 +378,26 @@ try the party websites or services, and customized browsing experiences. </p> +<h3 id="faq-dev-01">How can I set up Chrome for extension development?</h3> +<p> + As long as you are using a version of Chrome that supports + extensions, you already have everything you need to start writing an + extension of your own. + You can start by turning on Developer mode. + </p> + + <p> + Click the wrench icon + <img src="images/toolsmenu.gif" height="29" width="29" alt="" class="nomargin"> + and select <b>Extensions</b> from the <b>Tools</b> menu. + If there's a "+" next to "Developer mode", + click the "+" so it turns into a "-". + Now you can reload extensions, + load an unpacked directory of files as if it were a packaged extension, + and more. For a complete tutorial, see + <a href="http://code.google.com/chrome/extensions/getstarted.html">Getting Started</a>. +</p> + <h3 id="faq-gen-02">What technologies are used to write extensions for Chrome?</h3> <p> Extensions are written using the same standard web @@ -393,73 +423,61 @@ try the content from the web. </p> +<h3 id="faq-dev-14">How do I determine which version of Chrome is deployed to which channel?</h3> +<p> + To determine which version of Chrome is currently available on each + of the different platforms, visit + <a href="http://omahaproxy.appspot.com">omahaproxy.appspot.com</a>. On that + site you will see data in a format similar to: +</p> -<h2>Development</h2> - +<pre>cf,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +cf,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +cf,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +linux,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +linux,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +linux,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +mac,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +mac,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +mac,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +win,canary,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +win,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +win,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +win,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +cros,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### +cros,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####</pre> -<h3 id="faq-dev-01">How can I set up Chrome for extension development?</h3> <p> - As long as you are using a version of Chrome that supports - extensions, you already have everything you need to start writing an - extension of your own. - You can start by turning on Developer mode. - </p> - - <p> - Click the wrench icon - <img src="images/toolsmenu.gif" height="29" width="29" alt="" class="nomargin"> - and select <b>Extensions</b> from the <b>Tools</b> menu. - If there's a "+" next to "Developer mode", - click the "+" so it turns into a "-". - Now you can reload extensions, - load an unpacked directory of files as if it were a packaged extension, - and more. For a complete tutorial, see - <a href="http://code.google.com/chrome/extensions/getstarted.html">Getting Started</a>. + Each line represents information about a different platform and channel + combination. The + listed platforms are <code>cf</code> (Google Chrome Frame), + <code>linux</code>, <code>mac</code>, <code>win</code>, and + <code>cros</code> (Google Chrome OS). The listed + channels are <code>canary</code>, <code>dev</code>, <code>beta</code>, + and <code>stable</code>. + The two four-part numbers after the channel represent the current and previous + versions of Chrome deployed to that platform-channel + combination. The rest of the information is metadata about when the releases + were first pushed, as well as revision numbers associated with each build. </p> -<h3 id="faq-dev-02">Can I make cross-domain Ajax requests in an extension?</h3> + +<h2>Capabilities</h2> + +<h3 id="faq-dev-02">Can extensions make cross-domain Ajax requests?</h3> <p> Yes. Extensions can make cross-domain requests. See <a href="http://code.google.com/chrome/extensions/xhr.html">this page</a> for more information. </p> -<h3 id="faq-dev-03">Can I use 3rd party web services in my extension?</h3> +<h3 id="faq-dev-03">Can extensions use 3rd party web services?</h3> <p> Yes. Extensions are capable of making cross-domain Ajax requests, so they can call remote APIs directly. APIs that provide data in JSON format are particularly easy to use. </p> -<h3 id="faq-dev-04">Can I use OAuth in my extensions?</h3> -<p> - Absolutely, there are extensions that use OAuth to access remote data - APIs. Most developers find it convenient to use a - <a href="http://unitedheroes.net/OAuthSimple/js/OAuthSimple.js">JavaScript OAuth library</a> - in order to simplify the process of signing OAuth requests. -</p> - -<h3 id="faq-dev-05">What UI controls can I create for my extension?</h3> -<p> - Extensions use HTML and CSS to define their user interfaces, so you can use - standard form controls to build your UI, or style the interface with CSS, - as you would a web page. Additionally, your extension may add buttons - to the Chrome browser itself. See - <a href="http://code.google.com/chrome/extensions/browserAction.html">browser actions</a> - and - <a href="http://code.google.com/chrome/extensions/pageAction.html">page actions</a> - for more information. -</p> - -<h3 id="faq-dev-06">Can I load DLLs in my extension?</h3> -<p> - Yes, using the - <a href="http://code.google.com/chrome/extensions/trunk/npapi.html">NPAPI interface</a>. - Because of the possibility for abuse, though, we will review your extension - before hosting it in the Google Chrome Extensions Gallery - or Chrome Web Store. -</p> - <h3 id="faq-dev-07">Can extensions encode/decode JSON data?</h3> <p> Yes, because V8 (Chrome's JavaScript engine) supports @@ -469,7 +487,7 @@ try the any additional JSON libraries in your code. </p> -<h3 id="faq-dev-08">Can I store data locally in my extension?</h3> +<h3 id="faq-dev-08">Can extensions store data locally?</h3> <p> Yes, extensions can use <a href="http://dev.w3.org/html5/webstorage/">localStorage</a> to store string data permanently. Using Chrome's built-in JSON @@ -480,33 +498,44 @@ try the which may be used as well. </p> -<h3 id="faq-dev-09">How much data can I store in localStorage?</h3> +<h3 id="faq-dev-04">Can extensions use OAuth?</h3> <p> - Extensions can store up to 5MB of data in localStorage. + Yes, there are extensions that use OAuth to access remote data + APIs. Most developers find it convenient to use a + <a href="http://unitedheroes.net/OAuthSimple/js/OAuthSimple.js">JavaScript OAuth library</a> + in order to simplify the process of signing OAuth requests. </p> -<h3 id="faq-dev-10">Can I create an options menu for my application?</h3> +<h3 id="faq-dev-06">Can extensions load DLLs?</h3> <p> - You can let users set options for your extension by creating an - <a href="http://code.google.com/chrome/extensions/trunk/options.html">options page</a>, - which is a simple HTML page that will be loaded when a user clicks the - "options" button for your extension. This page can read and write settings - to localStorage, or even send options to a web server so that they can be - persisted across browsers. + Yes, using the <a href="npapi.html">NPAPI interface</a>. + Because of the possibility for abuse, though, we will review your extension + before hosting it in the Google Chrome Extensions Gallery + or Chrome Web Store. </p> -<h3 id="faq-dev-11">Can two extensions communicate with each other?</h3> +<h3 id="faq-dev-05">Can extensions create UI outside of the rendered web page?</h3> <p> - Extensions may pass messages to other extensions. See the - <a href="http://code.google.com/chrome/extensions/trunk/messaging.html#external">message passing documentation</a> - for more information. + Yes, your extension may add buttons to the Chrome browser's user interface. + See <a href="browserAction.html">browser actions</a> and + <a href="pageAction.html">page actions</a> for more information. +</p> +<p> + An extension may also create popup notifications, which exist outside of the + browser window. See the <a href="notifications.html">desktop + notifications</a> documentation for more details. </p> -<h3 id="faq-dev-12">What debugging tools are available to extension developers?</h3> +<h3 id="faq-interact-chrome">Can extensions listen to clicks on Chrome tabs and + navigation buttons?</h3> <p> - Chrome's built-in developer tools can be used to debug extensions - as well as web pages. See this - <a href="http://code.google.com/chrome/extensions/tut_debugging.html ">tutorial on debugging extensions</a> + No. Extensions are limited to listening to the events described in the <a href="api_index.html">API documentation</a>. +</p> + +<h3 id="faq-dev-11">Can two extensions communicate with each other?</h3> +<p> + Yes, extensions may pass messages to other extensions. See the + <a href="messaging.html#external">message passing documentation</a> for more information. </p> @@ -520,39 +549,7 @@ try the this. </p> -<h3 id="faq-dev-14">How do I determine which version of Chrome is deployed to which channel?</h3> -<p> - To determine which version of Chrome is currently available on each - of the different platforms, visit - <a href="http://omahaproxy.appspot.com">omahaproxy.appspot.com</a>. On that - site you will see data in a format similar to: -</p> -<pre>cf,dev,#.#.###.#,#.#.###.# -cf,beta,#.#.###.#,#.#.###.# -cf,stable,#.#.###.#,#.#.###.# -linux,dev,#.#.###.#,#.#.###.# -linux,beta,#.#.###.#,#.#.###.# -linux,stable,#.#.###.#,#.#.###.# -mac,dev,#.#.###.#,#.#.###.# -mac,beta,#.#.###.#,#.#.###.# -mac,stable,#.#.###.#,#.#.###.# -win,canary,#.#.###.#,#.#.###.# -win,dev,#.#.###.#,#.#.###.# -win,beta,#.#.###.#,#.#.###.# -win,stable,#.#.###.#,#.#.###.#</pre> - -<p> - Each line represents a different platform and channel combination. The - listed platforms are <code>cf</code> (Google Chrome Frame), - <code>linux</code>, <code>mac</code>, and <code>win</code>. The listed - channels are <code>canary</code>, <code>dev</code>, <code>beta</code>, - and <code>stable</code>. - The two four-part numbers at the end of each line represent the range of - versions of Chrome currently deployed to that platform-channel - combination. -</p> - -<h3 id="faq-dev-15">Can I add a content script to chrome:// URLs?</h3> +<h3 id="faq-dev-15">Can extensions modify chrome:// URLs?</h3> <p> No. The extensions APIs have been designed to minimize backwards compatibility issues that can arise when new versions of the browser are @@ -573,6 +570,64 @@ win,stable,#.#.###.#,#.#.###.#</pre> to stay the same. </p> +<h3 id="faq-open-popups">Can extensions open browser/page action popups without + user interaction?</h3> +<p> + No, popups can only be opened if the user clicks on the corresponding page or + browser action. An extension cannot open its popup programatically. +</p> + +<h3 id="faq-persist-popups">Can extensions keep popups open after the user + clicks away from them?</h3> +<p> + No, popups automatically close when the user focuses on some portion of the + browser outside of the popup. There is no way to keep the popup open after + the user has clicked away. +</p> + +<h3 id="faq-lifecycle-events">Can extensions be notified when they are + installed/uninstalled?</h3> +<p> + No, there are no events an extension can listen to in order to determine + whether it has been installed or uninstalled. However, an extension can + determine when it has been run for the first time. See <a href="#faq-firstrun">this FAQ entry</a> for information. +</p> + + +<h2>Development</h2> + + +<h3 id="faq-building-ui">How do I build a UI for my extension?</h3> +<p> + Extensions use HTML and CSS to define their user interfaces, so you can use + standard form controls to build your UI, or style the interface with CSS, + as you would a web page. Additionally, extensions can add + <a href="#faq-dev-05">some limited UI elements to Chrome itself.</a> +</p> + +<h3 id="faq-dev-09">How much data can I store in localStorage?</h3> +<p> + Extensions can store up to 5MB of data in localStorage. +</p> + +<h3 id="faq-dev-10">How do I create an options menu for my application?</h3> +<p> + You can let users set options for your extension by creating an + <a href="http://code.google.com/chrome/extensions/trunk/options.html">options page</a>, + which is a simple HTML page that will be loaded when a user clicks the + "options" button for your extension. This page can read and write settings + to localStorage, or even send options to a web server so that they can be + persisted across browsers. +</p> + +<h3 id="faq-dev-12">What debugging tools are available to extension developers?</h3> +<p> + Chrome's built-in developer tools can be used to debug extensions + as well as web pages. See this + <a href="http://code.google.com/chrome/extensions/tut_debugging.html ">tutorial on debugging extensions</a> + for more information. +</p> + <h3 id="faq-dev-16">Why do wildcard matches not work for top level domains (TLDs)?</h3> <p> @@ -597,8 +652,35 @@ win,stable,#.#.###.#,#.#.###.#</pre> your extension on. </p> +<h3 id="faq-management">Why does the management API not fire events when my + extension is installed/uninstalled?</h3> +<p> + The <a href="management.html">management API</a> was intended to help create + new tab page replacement extensions. It was not intended to fire + install/uninstall events for the current extension. +</p> + +<h3 id="faq-firstrun">How can an extension determine whether it is running for + the first time?</h3> +<p> + An extension can check to see whether it is running for the first time by + checking for the presence of a value in localStorage, and writing the value if + it does not exist. For example: +</p> + +<pre>var firstRun = (localStorage['firstRun'] == 'true'); +if (!firstRun) { + localStorage['firstRun'] = 'true'; +}</pre> + +<p> + Note that this check should be run in a background page, not a content script. +</p> + + <h2>Features and bugs</h2> + <h3 id="faq-fea-01">I think I've found a bug! How do I make sure it gets fixed?</h3> <p> |