Skip to content

Commit

Permalink
Add insertAdjacentElement() and insertAdjacentText()
Browse files Browse the repository at this point in the history
Fixes https://www.w3.org/Bugs/Public/show_bug.cgi?id=19962.

Standard is based on Blink.
  • Loading branch information
annevk committed Mar 14, 2016
1 parent 97f0a95 commit 8fa7ac7
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 0 deletions.
51 changes: 51 additions & 0 deletions dom.bs
Expand Up @@ -5029,6 +5029,9 @@ interface Element : Node {
HTMLCollection getElementsByTagName(DOMString qualifiedName);
HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
HTMLCollection getElementsByClassName(DOMString classNames);

Element? insertAdjacentElement(DOMString where, Element element); // historical
void insertAdjacentText(DOMString where, DOMString data); // historical
};</pre>


Expand Down Expand Up @@ -5638,6 +5641,54 @@ method must return the
<a>list of elements with class names <var>classNames</var></a>
for the <a>context object</a>.

<hr>

<p>To <dfn>insert adjacent</dfn>, given an <a for=/>element</a> <var>element</var>, string
<var>where</var>, and a <a>node</a> <var>node</var>, run the steps associated with the first
<a>ASCII case-insensitive</a> match for <var>where</var>:

<dl class=switch>
<dt>"<code>beforebegin</code>"
<dd>
<p>If <var>element</var>'s <a>parent</a> is null, return null.

<p><a for=Node>Pre-insert</a> <var>node</var> into <var>element</var>'s <a>parent</a> before
<var>element</var>. Rethrow any exceptions.

<dt>"<code>afterbegin</code>"
<dd><p><a for=Node>Pre-insert</a> <var>node</var> into <var>element</var> before
<var>element</var>'s <a for=tree>first child</a>.

<dt>"<code>beforeend</code>"
<dd><p><a for=Node>Pre-insert</a> <var>node</var> into <var>element</var> before null.

<dt>"<code>afterend</code>"
<dd>
<p>If <var>element</var>'s <a>parent</a> is null, return null.

<p><a for=Node>Pre-insert</a> <var>node</var> into <var>element</var>'s <a>parent</a> before
<var>element</var>'s <a for=tree>next sibling</a>. Rethrow any exceptions.

<dt>Otherwise</dt>
<dd><p>Throw a {{SyntaxError}} exception.
</dl>

<p>The
<dfn method for=Element><code>insertAdjacentElement(<var>where</var>, <var>element</var>)</code></dfn>
method, when invoked, must return the result of running <a>insert adjacent</a>, given
<a>context object</a>, <var>where</var>, and <var>element</var>. Rethrow any exceptions.

<p>The
<dfn method for=Element><code>insertAdjacentText(<var>where</var>, <var>data</var>)</code></dfn>
method, when invoked, must run these steps:

<ol>
<li><p>Let <var>text</var> be a new <code>Text</code> object whose <a>data</a> is <var>data</var>.

<li><p>Run <a>insert adjacent</a>, given <a>context object</a>, <var>where</var>, and
<var>text</var>. Rethrow any exceptions.
</ol>


<h4 id='interface-namednodemap'>Interface {{NamedNodeMap}}</h4>

Expand Down
38 changes: 38 additions & 0 deletions dom.html
Expand Up @@ -2774,6 +2774,9 @@ <h3 class="heading settled" data-level="4.8" id="interface-element"><span class=
<a data-link-type="idl-name" href="#htmlcollection">HTMLCollection</a> <a class="idl-code" data-link-type="method" href="#dom-element-getelementsbytagname">getElementsByTagName</a>(DOMString <dfn class="idl-code" data-dfn-for="Element/getElementsByTagName(qualifiedName)" data-dfn-type="argument" data-export="" id="dom-element-getelementsbytagname-qualifiedname-qualifiedname">qualifiedName<a class="self-link" href="#dom-element-getelementsbytagname-qualifiedname-qualifiedname"></a></dfn>);
<a data-link-type="idl-name" href="#htmlcollection">HTMLCollection</a> <a class="idl-code" data-link-type="method" href="#dom-element-getelementsbytagnamens">getElementsByTagNameNS</a>(DOMString? <dfn class="idl-code" data-dfn-for="Element/getElementsByTagNameNS(namespace, localName)" data-dfn-type="argument" data-export="" id="dom-element-getelementsbytagnamens-namespace-localname-namespace">namespace<a class="self-link" href="#dom-element-getelementsbytagnamens-namespace-localname-namespace"></a></dfn>, DOMString <dfn class="idl-code" data-dfn-for="Element/getElementsByTagNameNS(namespace, localName)" data-dfn-type="argument" data-export="" id="dom-element-getelementsbytagnamens-namespace-localname-localname">localName<a class="self-link" href="#dom-element-getelementsbytagnamens-namespace-localname-localname"></a></dfn>);
<a data-link-type="idl-name" href="#htmlcollection">HTMLCollection</a> <a class="idl-code" data-link-type="method" href="#dom-element-getelementsbyclassname">getElementsByClassName</a>(DOMString <dfn class="idl-code" data-dfn-for="Element/getElementsByClassName(classNames)" data-dfn-type="argument" data-export="" id="dom-element-getelementsbyclassname-classnames-classnames">classNames<a class="self-link" href="#dom-element-getelementsbyclassname-classnames-classnames"></a></dfn>);

<a data-link-type="idl-name" href="#element">Element</a>? <a class="idl-code" data-link-type="method" href="#dom-element-insertadjacentelement">insertAdjacentElement</a>(DOMString <dfn class="idl-code" data-dfn-for="Element/insertAdjacentElement(where, element)" data-dfn-type="argument" data-export="" id="dom-element-insertadjacentelement-where-element-where">where<a class="self-link" href="#dom-element-insertadjacentelement-where-element-where"></a></dfn>, <a data-link-type="idl-name" href="#element">Element</a> <dfn class="idl-code" data-dfn-for="Element/insertAdjacentElement(where, element)" data-dfn-type="argument" data-export="" id="dom-element-insertadjacentelement-where-element-element">element<a class="self-link" href="#dom-element-insertadjacentelement-where-element-element"></a></dfn>); // historical
void <a class="idl-code" data-link-type="method" href="#dom-element-insertadjacenttext">insertAdjacentText</a>(DOMString <dfn class="idl-code" data-dfn-for="Element/insertAdjacentText(where, data)" data-dfn-type="argument" data-export="" id="dom-element-insertadjacenttext-where-data-where">where<a class="self-link" href="#dom-element-insertadjacenttext-where-data-where"></a></dfn>, DOMString <dfn class="idl-code" data-dfn-for="Element/insertAdjacentText(where, data)" data-dfn-type="argument" data-export="" id="dom-element-insertadjacenttext-where-data-data">data<a class="self-link" href="#dom-element-insertadjacenttext-where-data-data"></a></dfn>); // historical
};</pre>
<p><code class="idl"><a data-link-type="idl" href="#element">Element</a></code> <a data-link-type="dfn" href="#concept-node">nodes</a> are simply
known as <dfn data-dfn-type="dfn" data-export="" data-lt="element" id="concept-element">elements<a class="self-link" href="#concept-element"></a></dfn>.</p>
Expand Down Expand Up @@ -3057,6 +3060,35 @@ <h3 class="heading settled" data-level="4.8" id="interface-element"><span class=
<p>The <dfn class="idl-code" data-dfn-for="Element" data-dfn-type="method" data-export="" id="dom-element-getelementsbytagname"><code>getElementsByTagName(<var>qualifiedName</var>)</code><a class="self-link" href="#dom-element-getelementsbytagname"></a></dfn> method, when invoked, must return the <a data-link-type="dfn" href="#concept-getelementsbytagname">list of elements with qualified name <var>qualifiedName</var></a> for the <a data-link-type="dfn" href="#context-object">context object</a>. </p>
<p>The <dfn class="idl-code" data-dfn-for="Element" data-dfn-type="method" data-export="" id="dom-element-getelementsbytagnamens">getElementsByTagNameNS(<var>namespace</var>, <var>localName</var>)<a class="self-link" href="#dom-element-getelementsbytagnamens"></a></dfn> method must return the <a data-link-type="dfn" href="#concept-getelementsbytagnamens">list of elements with namespace <var>namespace</var> and local name <var>localName</var></a> for the <a data-link-type="dfn" href="#context-object">context object</a>.</p>
<p>The <dfn class="idl-code" data-dfn-for="Element" data-dfn-type="method" data-export="" id="dom-element-getelementsbyclassname">getElementsByClassName(<var title="">classNames</var>)<a class="self-link" href="#dom-element-getelementsbyclassname"></a></dfn> method must return the <a data-link-type="dfn" href="#concept-getelementsbyclassname">list of elements with class names <var>classNames</var></a> for the <a data-link-type="dfn" href="#context-object">context object</a>.</p>
<hr>
<p>To <dfn data-dfn-type="dfn" data-noexport="" id="insert-adjacent">insert adjacent<a class="self-link" href="#insert-adjacent"></a></dfn>, given an <a data-link-type="dfn" href="#concept-element">element</a> <var>element</var>, string <var>where</var>, and a <a data-link-type="dfn" href="#concept-node">node</a> <var>node</var>, run the steps associated with the first <a data-link-type="dfn" href="#ascii-case-insensitive">ASCII case-insensitive</a> match for <var>where</var>: </p>
<dl class="switch">
<dt>"<code>beforebegin</code>"
<dd>
<p>If <var>element</var>’s <a data-link-type="dfn" href="#concept-tree-parent">parent</a> is null, return null. </p>
<p><a data-link-type="dfn" href="#concept-node-pre-insert">Pre-insert</a> <var>node</var> into <var>element</var>’s <a data-link-type="dfn" href="#concept-tree-parent">parent</a> before <var>element</var>. Rethrow any exceptions. </p>
<dt>"<code>afterbegin</code>"
<dd>
<p><a data-link-type="dfn" href="#concept-node-pre-insert">Pre-insert</a> <var>node</var> into <var>element</var> before <var>element</var>’s <a data-link-type="dfn" href="#concept-tree-first-child">first child</a>. </p>
<dt>"<code>beforeend</code>"
<dd>
<p><a data-link-type="dfn" href="#concept-node-pre-insert">Pre-insert</a> <var>node</var> into <var>element</var> before null. </p>
<dt>"<code>afterend</code>"
<dd>
<p>If <var>element</var>’s <a data-link-type="dfn" href="#concept-tree-parent">parent</a> is null, return null. </p>
<p><a data-link-type="dfn" href="#concept-node-pre-insert">Pre-insert</a> <var>node</var> into <var>element</var>’s <a data-link-type="dfn" href="#concept-tree-parent">parent</a> before <var>element</var>’s <a data-link-type="dfn" href="#concept-tree-next-sibling">next sibling</a>. Rethrow any exceptions. </p>
<dt>Otherwise
<dd>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://heycam.github.io/webidl/#syntaxerror">SyntaxError</a></code> exception. </p>
</dl>
<p>The <dfn class="idl-code" data-dfn-for="Element" data-dfn-type="method" data-export="" id="dom-element-insertadjacentelement"><code>insertAdjacentElement(<var>where</var>, <var>element</var>)</code><a class="self-link" href="#dom-element-insertadjacentelement"></a></dfn> method, when invoked, must return the result of running <a data-link-type="dfn" href="#insert-adjacent">insert adjacent</a>, given <a data-link-type="dfn" href="#context-object">context object</a>, <var>where</var>, and <var>element</var>. Rethrow any exceptions. </p>
<p>The <dfn class="idl-code" data-dfn-for="Element" data-dfn-type="method" data-export="" id="dom-element-insertadjacenttext"><code>insertAdjacentText(<var>where</var>, <var>data</var>)</code><a class="self-link" href="#dom-element-insertadjacenttext"></a></dfn> method, when invoked, must run these steps: </p>
<ol>
<li>
<p>Let <var>text</var> be a new <code>Text</code> object whose <a data-link-type="dfn" href="#concept-cd-data">data</a> is <var>data</var>. </p>
<li>
<p>Run <a data-link-type="dfn" href="#insert-adjacent">insert adjacent</a>, given <a data-link-type="dfn" href="#context-object">context object</a>, <var>where</var>, and <var>text</var>. Rethrow any exceptions. </p>
</ol>
<h4 class="heading settled" data-level="4.8.1" id="interface-namednodemap"><span class="secno">4.8.1. </span><span class="content">Interface <code class="idl"><a data-link-type="idl" href="#namednodemap">NamedNodeMap</a></code></span><a class="self-link" href="#interface-namednodemap"></a></h4>
<pre class="idl def">[Exposed=Window, LegacyUnenumerableNamedProperties]
interface <dfn class="idl-code" data-dfn-type="interface" data-export="" id="namednodemap">NamedNodeMap<a class="self-link" href="#namednodemap"></a></dfn> {
Expand Down Expand Up @@ -4975,6 +5007,9 @@ <h3 class="no-num no-ref heading settled" id="index-defined-here"><span class="c
<li><a href="#concept-node-insert">dfn for Node</a><span>, in §4.2.1</span>
<li><a href="#concept-range-insert">dfn for Range</a><span>, in §5.2</span>
</ul>
<li><a href="#insert-adjacent">insert adjacent</a><span>, in §4.8</span>
<li><a href="#dom-element-insertadjacentelement">insertAdjacentElement(where, element)</a><span>, in §4.8</span>
<li><a href="#dom-element-insertadjacenttext">insertAdjacentText(where, data)</a><span>, in §4.8</span>
<li><a href="#dom-node-insertbefore">insertBefore(node, child)</a><span>, in §4.4</span>
<li><a href="#dom-characterdata-insertdata">insertData(offset, data)</a><span>, in §4.9</span>
<li><a href="#concept-node-insert-ext">insertion steps</a><span>, in §4.2.1</span>
Expand Down Expand Up @@ -5808,6 +5843,9 @@ <h2 class="no-num no-ref heading settled" id="idl-index"><span class="content">I
<a data-link-type="idl-name" href="#htmlcollection">HTMLCollection</a> <a class="idl-code" data-link-type="method" href="#dom-element-getelementsbytagname">getElementsByTagName</a>(DOMString <a href="#dom-element-getelementsbytagname-qualifiedname-qualifiedname">qualifiedName</a>);
<a data-link-type="idl-name" href="#htmlcollection">HTMLCollection</a> <a class="idl-code" data-link-type="method" href="#dom-element-getelementsbytagnamens">getElementsByTagNameNS</a>(DOMString? <a href="#dom-element-getelementsbytagnamens-namespace-localname-namespace">namespace</a>, DOMString <a href="#dom-element-getelementsbytagnamens-namespace-localname-localname">localName</a>);
<a data-link-type="idl-name" href="#htmlcollection">HTMLCollection</a> <a class="idl-code" data-link-type="method" href="#dom-element-getelementsbyclassname">getElementsByClassName</a>(DOMString <a href="#dom-element-getelementsbyclassname-classnames-classnames">classNames</a>);

<a data-link-type="idl-name" href="#element">Element</a>? <a class="idl-code" data-link-type="method" href="#dom-element-insertadjacentelement">insertAdjacentElement</a>(DOMString <a href="#dom-element-insertadjacentelement-where-element-where">where</a>, <a data-link-type="idl-name" href="#element">Element</a> <a href="#dom-element-insertadjacentelement-where-element-element">element</a>); // historical
void <a class="idl-code" data-link-type="method" href="#dom-element-insertadjacenttext">insertAdjacentText</a>(DOMString <a href="#dom-element-insertadjacenttext-where-data-where">where</a>, DOMString <a href="#dom-element-insertadjacenttext-where-data-data">data</a>); // historical
};
[Exposed=Window, LegacyUnenumerableNamedProperties]
interface <a href="#namednodemap">NamedNodeMap</a> {
Expand Down

0 comments on commit 8fa7ac7

Please sign in to comment.