diff --git a/docs/polymer/polymer.md b/docs/polymer/polymer.md
index 491a0a12e8..0bf3b47b92 100644
--- a/docs/polymer/polymer.md
+++ b/docs/polymer/polymer.md
@@ -20,9 +20,21 @@ At the heart of {{site.project_title}} are [Custom Elements](/platform/custom-el
-
+
+The element declaration includes:
+
+- The `name` attribute specifies the name of the new custom element.
+- The optional `` tag defines HTML content that is
+ cloned into the shadow DOM of each instance of the element.
+- The `Polymer` method, which _registers_ the element, so it's
+ recognized as a custom element by the browser.
+
### Attributes
{{site.project_title}} reserves special attributes to be used on ``:
@@ -41,7 +53,7 @@ At the heart of {{site.project_title}} are [Custom Elements](/platform/custom-el
For simple elements that don't need to call Polymer(). See Element registration.
constructor
optional
The name of the constructor to put on the global object. Allows users to create instances of your element using the new operator (e.g. var tagName = new TagName()).
@@ -55,7 +67,7 @@ on each instance of the element. For example:
...
-
+
When an instance of `` is created, it contains `class="active" mycustomattr`
@@ -79,11 +91,43 @@ This also means that any of the below examples will also work:
-### Alternate ways to register an element {#altregistration}
+
+
+### Element registration {#altregistration}
+
+The `Polymer` method is used to register an element:
+
+
+Polymer([ tag-name, ] [prototype]);
+
+
+Where:
+
+* _tag-name_ matches the `name` attribute in the `` tag.
+ _tag-name_ is optional **unless the `
+
+
+There are several alternatives to registering an element in an an inline script:
+
+- [Separating script from markup](#separatescript).
+- [Registering imperatively](#imperativeregister) using JavaScript.
+
+#### Separating script from markup {#separatescript}
For convenient decoupling of script and markup, you don't have to inline your script.
{{site.project_title}} elements can be created by referencing an external script
-which calls `Polymer('tag-name')`:
+which calls `Polymer`:
@@ -97,6 +141,15 @@ which calls `Polymer('tag-name')`:
...
+In case #2, where the script is invoked before the `` tag,
+the call to `Polymer` **must include the tag name**:
+
+ // tagname.js
+ Polymer('tag-name', ... );
+
+For elements that don't require custom properties or methods, you can
+use the `noscript` attribute:
+
@@ -104,9 +157,15 @@ which calls `Polymer('tag-name')`:
-#### Imperative registration {#imperativeregister}
+The `noscript` attribute is equivalent to including:
-Elements can be registered in pure JavaScript like so:
+
+
+#### Registering imperatively {#imperativeregister}
+
+Elements can be registered in pure JavaScript like this:
@@ -234,7 +294,7 @@ A slight tweak of this approach lets you configure the value of the globals exte
(function() {
var values = {};
- Polymer('app-globals', {
+ Polymer({
ready: function() {
this.values = values;
for (var i = 0; i < this.attributes.length; ++i) {
@@ -338,7 +398,7 @@ As an example, here's an element that publishes three public properties, `foo`,
@@ -346,7 +406,7 @@ And here's one using the `publish` object:
@@ -392,7 +452,7 @@ You can provide your own default values by explicitly specifying the default val
@@ -640,7 +714,7 @@ It uses special on-event syntax to trigger this binding be
@@ -868,7 +942,7 @@ and data-bound.
@@ -884,7 +958,7 @@ When you override an inherited method, you can call the parent's method with `th
You are {{praise}} !