<!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note:
    1) The <head> information in this page is significant, should be uniform
       across api docs and should be edited only with knowledge of the
       templating mechanism.
    3) All <body>.innerHTML is genereated as an rendering step. If viewed in a
       browser, it will be re-generated from the template, json schema and
       authored overview content.
    4) The <body>.innerHTML is also generated by an offline step so that this
       page may easily be indexed by search engines.
--><html xmlns="http://www.w3.org/1999/xhtml"><head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css">
    <link href="css/print.css" rel="stylesheet" type="text/css" media="print">
    <script type="text/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js">
    </script>
    <script type="text/javascript" src="js/api_page_generator.js"></script>
    <script type="text/javascript" src="js/bootstrap.js"></script>
    <script type="text/javascript" src="js/sidebar.js"></script>
  <title>Context Menus - Google Chrome Extensions - Google Code</title></head>
  <body>  <div id="gc-container" class="labs">
      <div id="devModeWarning">
        You are viewing extension docs in chrome via the 'file:' scheme: are you expecting to see local changes when you refresh? You'll need run chrome with --allow-file-access-from-files.
      </div>
      <!-- SUBTEMPLATES: DO NOT MOVE FROM THIS LOCATION -->
      <!-- In particular, sub-templates that recurse, must be used by allowing
           jstemplate to make a copy of the template in this section which
           are not operated on by way of the jsskip="true" -->
      <div style="display:none">

        <!-- VALUE -->
        <div id="valueTemplate">
          <dt>
            <var>paramName</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum">enumerated</span>
                    <span id="typeTemplate">
                      <span>
                        <a> Type</a>
                      </span>
                      <span>
                        <span>
                          array of <span><span></span></span>
                        </span>
                        <span>paramType</span>
                        <span></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo">
            Undocumented.
          </dd>
          <dd>
            Description of this parameter from the json schema.
          </dd>
          <dd>
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd>
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd>
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd>
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd>
            <div></div>
          </dd>

        </div> <!-- /VALUE -->

        <div id="functionParametersTemplate">
          <h5>Parameters</h5>
          <dl>
            <div>
              <div>
              </div>
            </div>
          </dl>
        </div>
      </div> <!-- /SUBTEMPLATES -->

  <a id="top"></a>
    <div id="skipto">
      <a href="#gc-pagecontent">Skip to page content</a>
      <a href="#gc-toc">Skip to main navigation</a>
    </div>
    <!-- API HEADER -->
    <table id="header" width="100%" cellspacing="0" border="0">
      <tbody><tr>
        <td valign="middle"><a href="http://code.google.com/"><img src="images/code_labs_logo.gif" height="43" width="161" alt="Google Code Labs" style="border:0; margin:0;"></a></td>
        <td valign="middle" width="100%" style="padding-left:0.6em;">
          <form action="http://www.google.com/cse" id="cse" style="margin-top:0.5em">
            <div id="gsc-search-box">
              <input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno">
              <input type="hidden" name="ie" value="UTF-8">
              <input type="text" name="q" value="" size="55">
              <input class="gsc-search-button" type="submit" name="sa" value="Search">
              <br>
              <span class="greytext">e.g. "page action" or "tabs"</span>
            </div>
          </form>

          <script type="text/javascript" src="http://www.google.com/jsapi"></script>
          <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script>
          <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse&amp;t13n_langs=en"></script>
          <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse&amp;lang=en"></script>
        </td>
      </tr>
    </tbody></table>

    <div id="codesiteContent" class="">

      <a id="gc-topnav-anchor"></a>
      <div id="gc-topnav">
        <h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Labs</a>)</h1>
        <ul id="home" class="gc-topnav-tabs">
          <li id="home_link">
            <a href="index.html" title="Google Chrome Extensions home page">Home</a>
          </li>
          <li id="docs_link">
            <a href="docs.html" title="Official Google Chrome Extensions documentation">Docs</a>
          </li>
          <li id="faq_link">
            <a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions">FAQ</a>
          </li>
          <li id="samples_link">
            <a href="samples.html" title="Sample extensions (with source code)">Samples</a>
          </li>
          <li id="group_link">
            <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum">Group</a>
          </li>
        </ul>
      </div> <!-- end gc-topnav -->

    <div class="g-section g-tpl-170">
      <!-- SIDENAV -->
      <div class="g-unit g-first" id="gc-toc">
        <ul>
          <li><a href="getstarted.html">Getting Started</a></li>
          <li><a href="overview.html">Overview</a></li>
          <li><a href="whats_new.html">What's New?</a></li>
          <li><h2><a href="devguide.html">Developer's Guide</a></h2>
            <ul>
              <li>Browser UI
                <ul>
                  <li><a href="browserAction.html">Browser Actions</a></li>
                  <li class="leftNavSelected">Context Menus</li>
                  <li><a href="notifications.html">Desktop Notifications</a></li>
                  <li><a href="omnibox.html">Omnibox</a></li>
                  <li><a href="options.html">Options Pages</a></li>
                  <li><a href="override.html">Override Pages</a></li>
                  <li><a href="pageAction.html">Page Actions</a></li>
                </ul>
              </li>
              <li>Browser Interaction
                <ul>
                  <li><a href="bookmarks.html">Bookmarks</a></li>
                  <li><a href="cookies.html">Cookies</a></li>
                  <li><a href="events.html">Events</a></li>
                  <li><a href="history.html">History</a></li>
                  <li><a href="management.html">Management</a></li>
                  <li><a href="tabs.html">Tabs</a></li>
                  <li><a href="windows.html">Windows</a></li>
                </ul>
              </li>
              <li>Implementation
                <ul>
                  <li><a href="a11y.html">Accessibility</a></li>
                  <li><a href="background_pages.html">Background Pages</a></li>
                  <li><a href="content_scripts.html">Content Scripts</a></li>
                  <li><a href="xhr.html">Cross-Origin XHR</a></li>
                  <li><a href="idle.html">Idle</a></li>
                  <li><a href="i18n.html">Internationalization</a></li>
                  <li><a href="messaging.html">Message Passing</a></li>
                  <li><a href="npapi.html">NPAPI Plugins</a></li>
                </ul>
              </li>
              <li>Finishing
                <ul>
                  <li><a href="hosting.html">Hosting</a></li>
                  <li><a href="external_extensions.html">Other Deployment Options</a></li>
                </ul>
              </li>
            </ul>
          </li>
          <li><h2><a href="apps.html">Packaged Apps</a></h2></li>
          <li><h2><a href="tutorials.html">Tutorials</a></h2>
            <ul>
              <li><a href="tut_debugging.html">Debugging</a></li>
              <li><a href="tut_analytics.html">Google Analytics</a></li>
              <li><a href="tut_oauth.html">OAuth</a></li>
            </ul>
          </li>
          <li><h2>Reference</h2>
            <ul>
              <li>Formats
                <ul>
                  <li><a href="manifest.html">Manifest Files</a></li>
                  <li><a href="match_patterns.html">Match Patterns</a></li>
                </ul>
              </li>
              <li><a href="permission_warnings.html">Permission Warnings</a></li>
              <li><a href="api_index.html">chrome.* APIs</a></li>
              <li><a href="api_other.html">Other APIs</a></li>
            </ul>
          </li>
          <li><h2><a href="samples.html">Samples</a></h2></li>
          <div class="line"> </div>
          <li><h2>More</h2>
            <ul>
              <li><a href="http://code.google.com/chrome/webstore/docs/index.html">Chrome Web Store</a></li>
              <li><a href="http://code.google.com/chrome/apps/docs/developers_guide.html">Hosted Apps</a></li>
              <li><a href="themes.html">Themes</a></li>
            </ul>
          </li>
        </ul>
      </div>
      <script>
        initToggles();
      </script>

    <div class="g-unit" id="gc-pagecontent">
      <div id="pageTitle">
        <h1 class="page_title">Context Menus</h1>
      </div>
        <!-- TABLE OF CONTENTS -->
        <div id="toc">
          <h2>Contents</h2>
          <ol>
            <li>
              <a href="#manifest">Manifest</a>
              <ol>
                <li style="display: none; ">
                  <a>h3Name</a>
                </li>
              </ol>
            </li><li>
              <a href="#examples">Examples</a>
              <ol>
                <li style="display: none; ">
                  <a>h3Name</a>
                </li>
              </ol>
            </li>
              <li>
                <a href="#apiReference">API reference: chrome.contextMenus</a>
                <ol>
                  <li style="display: none; ">
                    <a href="#properties">Properties</a>
                    <ol>
                      <li>
                        <a href="#property-anchor">propertyName</a>
                      </li>
                    </ol>
                  </li>
                  <li>
                    <a href="#global-methods">Methods</a>
                    <ol>
                      <li>
                        <a href="#method-create">create</a>
                      </li><li>
                        <a href="#method-remove">remove</a>
                      </li><li>
                        <a href="#method-removeAll">removeAll</a>
                      </li><li>
                        <a href="#method-update">update</a>
                      </li>
                    </ol>
                  </li>
                  <li style="display: none; ">
                    <a>Events</a>
                    <ol>
                      <li>
                        <a href="#event-anchor">eventName</a>
                      </li>
                    </ol>
                  </li>
                  <li>
                    <a href="#types">Types</a>
                    <ol>
                      <li>
                        <a href="#type-OnClickData">OnClickData</a>
                      </li>
                    </ol>
                  </li>
                </ol>
              </li>
          </ol>
        </div>
        <!-- /TABLE OF CONTENTS -->

        <!-- Standard content lead-in for experimental API pages -->
        <p id="classSummary" style="display: none; ">
          For information on how to use experimental APIs, see the <a href="experimental.html">chrome.experimental.* APIs</a> page.
        </p>

        <!-- STATIC CONTENT PLACEHOLDER -->
        <div id="static"><div id="pageData-name" class="pageData">Context Menus</div>

<!-- BEGIN AUTHORED CONTENT -->
<p>
The context menus module allows you
to add items to Google Chrome's context menu.
</p>

<p>
You can choose what types of objects
your context menu additions apply to,
such as images, hyperlinks, and pages.
</p>

<p>
You can create as many context menu items
as you need, but if more than one
from your extension is visible at once,
Google Chrome automatically collapses them
into a single parent menu.
</p>

<h2 id="manifest">Manifest</h2>
<p>You must declare the "contextMenus" permission
in your extension's manifest to use the API.
Also, you should specify a 16x16-pixel icon
for display next to your menu item.
For example:
</p>

<pre>{
  "name": "My extension",
  ...
  "permissions": [
    <b>"contextMenus"</b>
  ],
  "icons": {
    <b>"16": "icon-bitty.png",</b>
    "48": "icon-small.png",
    "128": "icon-large.png"
  },
  ...
}</pre>

<h2 id="examples">Examples</h2>

<p>
You can find samples of this API on the
<a href="samples.html#contextMenus">sample page</a>.

<!-- END AUTHORED CONTENT -->
</p></div>

        <!-- API PAGE -->
        <div class="apiPage">
        <a name="apiReference"></a>
        <h2>API reference: chrome.contextMenus</h2>

          <!-- PROPERTIES -->
          <div class="apiGroup" style="display: none; ">
            <a name="properties"></a>
            <h3 id="properties">Properties</h3>

            <div>
              <a></a>
              <h4>getLastError</h4>
              <div class="summary">
                <!-- Note: intentionally longer 80 columns -->
                <span>chrome.extension</span><span>lastError</span>
              </div>
              <div>
              </div>
            </div>

          </div> <!-- /apiGroup -->

          <!-- METHODS -->
          <div id="methodsTemplate" class="apiGroup">
            <a name="global-methods"></a>
            <h3>Methods</h3>

            <!-- iterates over all functions -->
            <div class="apiItem">
              <a name="method-create"></a> <!-- method-anchor -->
              <h4>create</h4>

              <div class="summary"><span>integer</span>
                  <!-- Note: intentionally longer 80 columns -->
                  <span>chrome.contextMenus.create</span>(<span class="null"><span style="display: none; ">, </span><span>object</span>
                      <var><span>createProperties</span></var></span><span class="optional"><span>, </span><span>function</span>
                      <var><span>callback</span></var></span>)</div>

              <div class="description">
                <p class="todo" style="display: none; ">Undocumented.</p>
                <p>Creates a new context menu item. Note that if an error occurs during creation, you may not find out until the creation callback fires (the details will be in chrome.extension.lastError).</p>

                <!-- PARAMETERS -->
                <h4>Parameters</h4>
                <dl>
                  <div>
                    <div>
          <dt>
            <var>createProperties</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional" style="display: none; ">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>object</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo">
            Undocumented.
          </dd>
          <dd style="display: none; ">
            Description of this parameter from the json schema.
          </dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd>
            <dl>
              <div>
                <div>
          <dt>
            <var>type</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span>["normal", "checkbox", "radio", "separator"]</span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The type of menu item. Defaults to 'normal' if not specified.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>title</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The text to be displayed in the item; this is <em>required</em> unless <em>type</em> is 'separator'. When the context is 'selection', you can use <code>%s</code> within the string to show the selected text. For example, if this parameter's value is "Translate '%s' to Pig Latin" and the user selects the word "cool", the context menu item for the selection is "Translate 'cool' to Pig Latin".</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>checked</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>boolean</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The initial state of a checkbox or radio item: true for selected and false for unselected. Only one radio item can be selected at a time in a given group of radio items.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>contexts</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span>
                          array of <span><span>
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span>["all", "page", "frame", "selection", "link", "editable", "image", "video", "audio"]</span>
                      </span>
                    </span></span>
                        </span>
                        <span style="display: none; ">paramType</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>List of contexts this menu item will appear in. Defaults to ['page'] if not specified.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>onclick</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>function</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>A function that will be called back when the menu item is clicked.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd>
            <div>
          <h5>Parameters</h5>
          <dl>
            <div>
              <div>
          <dt>
            <var>info</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional" style="display: none; ">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span>
                        <a href="contextMenus.html#type-OnClickData">OnClickData</a>
                      </span>
                      <span style="display: none; ">
                        <span>
                          array of <span><span></span></span>
                        </span>
                        <span>paramType</span>
                        <span></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>Information about the item clicked and the context where the click happened.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
            </div><div>
              <div>
          <dt>
            <var>tab</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional" style="display: none; ">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span>
                        <a href="tabs.html#type-Tab">Tab</a>
                      </span>
                      <span style="display: none; ">
                        <span>
                          array of <span><span></span></span>
                        </span>
                        <span>paramType</span>
                        <span></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The details of the tab where the click took place.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
            </div>
          </dl>
        </div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>parentId</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>integer</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The ID of a parent menu item; this makes the item a child of a previously added item.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>documentUrlPatterns</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span>
                          array of <span><span>
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span></span>
                        </span>
                        <span style="display: none; ">paramType</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>Lets you restrict the item to apply only to documents whose URL matches one of the given patterns. (This applies to frames as well.) For details on the format of a pattern, see <a href="match_patterns.html">Match Patterns</a>.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>targetUrlPatterns</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span>
                          array of <span><span>
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span></span>
                        </span>
                        <span style="display: none; ">paramType</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>Similar to documentUrlPatterns, but lets you filter based on the src attribute of img/audio/video tags and the href of anchor tags.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
                  </div><div>
                    <div>
          <dt>
            <var>callback</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>function</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>Called when the item has been created in the browser. If there were any problems creating the item, details will be available in chrome.extension.lastError.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
                  </div>
                </dl>

                <!-- RETURNS -->
                <h4>Returns</h4>
                <dl>
                  <div>
                    <div>
          <dt>
            <var style="display: none; ">paramName</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional" style="display: none; ">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>integer</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The ID of the newly created item.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
                  </div>
                </dl>

                <!-- CALLBACK -->
                <div>
                  <div>
                  <h4>Callback function</h4>
                  <p style="display: none; ">
                    The callback <em>parameter</em> should specify a function
                    that looks like this:
                  </p>
                  <p>
                    If you specify the <em>callback</em> parameter, it should
                    specify a function that looks like this:
                  </p>

                  <!-- Note: intentionally longer 80 columns -->
                  <pre>function(<span></span>) <span class="subdued">{...}</span>;</pre>
                  <dl>
                    <div style="display: none; ">
                      <div>
                      </div>
                    </div>
                  </dl>
                  </div>
                </div>

                <!-- MIN_VERSION -->
                <p style="display: none; ">
                  This function was added in version <b><span></span></b>.
                  If you require this function, the manifest key
                  <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
                  can ensure that your extension won't be run in an earlier browser version.
                </p>
              </div> <!-- /description -->

            </div><div class="apiItem">
              <a name="method-remove"></a> <!-- method-anchor -->
              <h4>remove</h4>

              <div class="summary"><span style="display: none; ">void</span>
                  <!-- Note: intentionally longer 80 columns -->
                  <span>chrome.contextMenus.remove</span>(<span class="null"><span style="display: none; ">, </span><span>integer</span>
                      <var><span>menuItemId</span></var></span><span class="optional"><span>, </span><span>function</span>
                      <var><span>callback</span></var></span>)</div>

              <div class="description">
                <p class="todo" style="display: none; ">Undocumented.</p>
                <p>Remove a context menu item.</p>

                <!-- PARAMETERS -->
                <h4>Parameters</h4>
                <dl>
                  <div>
                    <div>
          <dt>
            <var>menuItemId</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional" style="display: none; ">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>integer</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The ID of the context menu item to remove.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
                  </div><div>
                    <div>
          <dt>
            <var>callback</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>function</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>Called when the context menu has been removed.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
                  </div>
                </dl>

                <!-- RETURNS -->
                <h4 style="display: none; ">Returns</h4>
                <dl>
                  <div style="display: none; ">
                    <div>
                    </div>
                  </div>
                </dl>

                <!-- CALLBACK -->
                <div>
                  <div>
                  <h4>Callback function</h4>
                  <p style="display: none; ">
                    The callback <em>parameter</em> should specify a function
                    that looks like this:
                  </p>
                  <p>
                    If you specify the <em>callback</em> parameter, it should
                    specify a function that looks like this:
                  </p>

                  <!-- Note: intentionally longer 80 columns -->
                  <pre>function(<span></span>) <span class="subdued">{...}</span>;</pre>
                  <dl>
                    <div style="display: none; ">
                      <div>
                      </div>
                    </div>
                  </dl>
                  </div>
                </div>

                <!-- MIN_VERSION -->
                <p style="display: none; ">
                  This function was added in version <b><span></span></b>.
                  If you require this function, the manifest key
                  <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
                  can ensure that your extension won't be run in an earlier browser version.
                </p>
              </div> <!-- /description -->

            </div><div class="apiItem">
              <a name="method-removeAll"></a> <!-- method-anchor -->
              <h4>removeAll</h4>

              <div class="summary"><span style="display: none; ">void</span>
                  <!-- Note: intentionally longer 80 columns -->
                  <span>chrome.contextMenus.removeAll</span>(<span class="optional"><span style="display: none; ">, </span><span>function</span>
                      <var><span>callback</span></var></span>)</div>

              <div class="description">
                <p class="todo" style="display: none; ">Undocumented.</p>
                <p>Remove all context menu items added by this extension.</p>

                <!-- PARAMETERS -->
                <h4>Parameters</h4>
                <dl>
                  <div>
                    <div>
          <dt>
            <var>callback</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>function</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>Called when removal is complete.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
                  </div>
                </dl>

                <!-- RETURNS -->
                <h4 style="display: none; ">Returns</h4>
                <dl>
                  <div style="display: none; ">
                    <div>
                    </div>
                  </div>
                </dl>

                <!-- CALLBACK -->
                <div>
                  <div>
                  <h4>Callback function</h4>
                  <p style="display: none; ">
                    The callback <em>parameter</em> should specify a function
                    that looks like this:
                  </p>
                  <p>
                    If you specify the <em>callback</em> parameter, it should
                    specify a function that looks like this:
                  </p>

                  <!-- Note: intentionally longer 80 columns -->
                  <pre>function(<span></span>) <span class="subdued">{...}</span>;</pre>
                  <dl>
                    <div style="display: none; ">
                      <div>
                      </div>
                    </div>
                  </dl>
                  </div>
                </div>

                <!-- MIN_VERSION -->
                <p style="display: none; ">
                  This function was added in version <b><span></span></b>.
                  If you require this function, the manifest key
                  <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
                  can ensure that your extension won't be run in an earlier browser version.
                </p>
              </div> <!-- /description -->

            </div><div class="apiItem">
              <a name="method-update"></a> <!-- method-anchor -->
              <h4>update</h4>

              <div class="summary"><span style="display: none; ">void</span>
                  <!-- Note: intentionally longer 80 columns -->
                  <span>chrome.contextMenus.update</span>(<span class="null"><span style="display: none; ">, </span><span>integer</span>
                      <var><span>id</span></var></span><span class="null"><span>, </span><span>object</span>
                      <var><span>updateProperties</span></var></span><span class="optional"><span>, </span><span>function</span>
                      <var><span>callback</span></var></span>)</div>

              <div class="description">
                <p class="todo" style="display: none; ">Undocumented.</p>
                <p>Update a previously created context menu item.</p>

                <!-- PARAMETERS -->
                <h4>Parameters</h4>
                <dl>
                  <div>
                    <div>
          <dt>
            <var>id</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional" style="display: none; ">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>integer</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The ID of the item to update.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
                  </div><div>
                    <div>
          <dt>
            <var>updateProperties</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional" style="display: none; ">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>object</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The properties to update. Accepts the same values as the create function.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd>
            <dl>
              <div>
                <div>
          <dt>
            <var>type</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span>["normal", "checkbox", "radio", "separator"]</span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo">
            Undocumented.
          </dd>
          <dd style="display: none; ">
            Description of this parameter from the json schema.
          </dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>title</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo">
            Undocumented.
          </dd>
          <dd style="display: none; ">
            Description of this parameter from the json schema.
          </dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>checked</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>boolean</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo">
            Undocumented.
          </dd>
          <dd style="display: none; ">
            Description of this parameter from the json schema.
          </dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>contexts</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span>
                          array of <span><span>
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span>["all", "page", "frame", "selection", "link", "editable", "image", "video", "audio"]</span>
                      </span>
                    </span></span>
                        </span>
                        <span style="display: none; ">paramType</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo">
            Undocumented.
          </dd>
          <dd style="display: none; ">
            Description of this parameter from the json schema.
          </dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>onclick</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>function</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo">
            Undocumented.
          </dd>
          <dd style="display: none; ">
            Description of this parameter from the json schema.
          </dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>parentId</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>integer</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>Note: You cannot change an item to be a child of one of its own descendants.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>documentUrlPatterns</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span>
                          array of <span><span>
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span></span>
                        </span>
                        <span style="display: none; ">paramType</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo">
            Undocumented.
          </dd>
          <dd style="display: none; ">
            Description of this parameter from the json schema.
          </dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>targetUrlPatterns</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span>
                          array of <span><span>
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span></span>
                        </span>
                        <span style="display: none; ">paramType</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo">
            Undocumented.
          </dd>
          <dd style="display: none; ">
            Description of this parameter from the json schema.
          </dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
                  </div><div>
                    <div>
          <dt>
            <var>callback</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>function</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>Called when the context menu has been updated.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
                  </div>
                </dl>

                <!-- RETURNS -->
                <h4 style="display: none; ">Returns</h4>
                <dl>
                  <div style="display: none; ">
                    <div>
                    </div>
                  </div>
                </dl>

                <!-- CALLBACK -->
                <div>
                  <div>
                  <h4>Callback function</h4>
                  <p style="display: none; ">
                    The callback <em>parameter</em> should specify a function
                    that looks like this:
                  </p>
                  <p>
                    If you specify the <em>callback</em> parameter, it should
                    specify a function that looks like this:
                  </p>

                  <!-- Note: intentionally longer 80 columns -->
                  <pre>function(<span></span>) <span class="subdued">{...}</span>;</pre>
                  <dl>
                    <div style="display: none; ">
                      <div>
                      </div>
                    </div>
                  </dl>
                  </div>
                </div>

                <!-- MIN_VERSION -->
                <p style="display: none; ">
                  This function was added in version <b><span></span></b>.
                  If you require this function, the manifest key
                  <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
                  can ensure that your extension won't be run in an earlier browser version.
                </p>
              </div> <!-- /description -->

            </div>  <!-- /apiItem -->

          </div>  <!-- /apiGroup -->

          <!-- EVENTS -->
          <div id="eventsTemplate" class="apiGroup" style="display: none; ">
            <a></a>
            <h3>Events</h3>
            <!-- iterates over all events -->
            <div class="apiItem">
              <a></a>
              <h4>event name</h4>

              <div class="summary">
                <!-- Note: intentionally longer 80 columns -->
                <span class="subdued">chrome.bookmarks</span><span>onEvent</span><span class="subdued">.addListener</span>(function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>);
              </div>

              <div class="description">
                <p class="todo">Undocumented.</p>
                <p>
                  A description from the json schema def of the event goes here.
                </p>

                <!-- PARAMETERS -->
                <div>
                  <h4>Parameters</h4>
                  <dl>
                    <div>
                      <div>
                      </div>
                    </div>
                  </dl>
                </div>
              </div> <!-- /decription -->

            </div> <!-- /apiItem -->

          </div> <!-- /apiGroup -->

          <!-- TYPES -->
          <div class="apiGroup">
            <a name="types"></a>
            <h3 id="types">Types</h3>

            <!-- iterates over all types -->
            <div class="apiItem">
              <a name="type-OnClickData"></a>
              <h4>OnClickData</h4>

              <div>
          <dt>
            <var style="display: none; ">paramName</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional" style="display: none; ">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>object</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>Information sent when a context menu item is clicked.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd>
            <dl>
              <div>
                <div>
          <dt>
            <var>menuItemId</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional" style="display: none; ">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>integer</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The ID of the menu item that was clicked.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>parentMenuItemId</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>integer</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The parent ID, if any, for the item clicked.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>mediaType</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>One of 'image', 'video', or 'audio' if the context menu was activated on one of these types of elements.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>linkUrl</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>If the element is a link, the URL it points to.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>srcUrl</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>Will be present for elements with a 'src' URL.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>pageUrl</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional" style="display: none; ">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The URL of the page where the menu item was clicked.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>frameUrl</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd> The URL of the frame of the element where the context menu was clicked, if it was in a frame.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>selectionText</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>The text for the context selection, if any.</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div><div>
                <div>
          <dt>
            <var>editable</var>
              <em>

                <!-- TYPE -->
                <div style="display:inline">
                  (
                    <span class="optional" style="display: none; ">optional</span>
                    <span class="enum" style="display: none; ">enumerated</span>
                    <span id="typeTemplate">
                      <span style="display: none; ">
                        <a> Type</a>
                      </span>
                      <span>
                        <span style="display: none; ">
                          array of <span><span></span></span>
                        </span>
                        <span>string</span>
                        <span style="display: none; "></span>
                      </span>
                    </span>
                  )
                </div>

              </em>
          </dt>
          <dd class="todo" style="display: none; ">
            Undocumented.
          </dd>
          <dd>A flag indicating whether the element is editable (text input, textarea, etc.).</dd>
          <dd style="display: none; ">
            This parameter was added in version
            <b><span></span></b>.
            You must omit this parameter in earlier versions,
            and you may omit it in any version.  If you require this
            parameter, the manifest key
            <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a>
            can ensure that your extension won't be run in an earlier browser version.
          </dd>

          <!-- OBJECT PROPERTIES -->
          <dd style="display: none; ">
            <dl>
              <div>
                <div>
                </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>
              </div>
            </dl>
          </dd>

          <!-- OBJECT METHODS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- OBJECT EVENT FIELDS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

          <!-- FUNCTION PARAMETERS -->
          <dd style="display: none; ">
            <div></div>
          </dd>

        </div>

            </div> <!-- /apiItem -->

          </div> <!-- /apiGroup -->

        </div> <!-- /apiPage -->
      </div> <!-- /gc-pagecontent -->
    </div> <!-- /g-section -->
  </div> <!-- /codesiteContent -->
    <div id="gc-footer" --="">
      <div class="text">
  <p>
  Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>,
  the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons
  Attribution 3.0 License</a>, and code samples are licensed under the
  <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
  </p>
  <p>
  ©2011 Google
  </p>

<!-- begin analytics -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script>

<script type="text/javascript">
  // chrome doc tracking
  try {
    var engdocs = _gat._getTracker("YT-10763712-2");
    engdocs._trackPageview();
  } catch(err) {}

  // code.google.com site-wide tracking
  try {
    _uacct="UA-18071-1";
    _uanchor=1;
    _uff=0;
    urchinTracker();
  }
  catch(e) {/* urchinTracker not available. */}
</script>
<!-- end analytics -->
      </div>
    </div> <!-- /gc-footer -->
  </div> <!-- /gc-container -->
</body></html>
