Files
sdk/tools/dom/templates/html/impl/impl_HTMLTableElement.darttemplate
T
blois@google.com c47eae035f Fixing createFragment on IE9 Table elements
Basically IE9 does not support innerHTML on table elements, so need to go one level up and wrap everything in a <table> tag.

Another issue is that IE9 does not support creating body elements or the matches call when the element is not in the document, updated the test to account for these.

BUG=12830
R=jmesserly@google.com

Review URL: https://codereview.chromium.org//23646003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26806 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-28 18:03:12 +00:00

59 lines
1.8 KiB
Plaintext

// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
part of $LIBRARYNAME;
@DocsEditable()
$(ANNOTATIONS)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
@DomName('HTMLTableElement.tBodies')
List<TableSectionElement> get tBodies =>
new _WrappedList<TableSectionElement>(_tBodies);
@DomName('HTMLTableElement.rows')
List<TableRowElement> get rows =>
new _WrappedList<TableRowElement>(_rows);
TableRowElement addRow() {
return insertRow(-1);
}
TableCaptionElement createCaption() => _createCaption();
TableSectionElement createTBody() => _createTBody();
TableSectionElement createTFoot() => _createTFoot();
TableSectionElement createTHead() => _createTHead();
TableRowElement insertRow(int index) => _insertRow(index);
$if DART2JS
TableSectionElement _createTBody() {
if (JS('bool', '!!#.createTBody', this)) {
return this._nativeCreateTBody();
}
var tbody = new Element.tag('tbody');
this.children.add(tbody);
return tbody;
}
@JSName('createTBody')
TableSectionElement _nativeCreateTBody() native;
DocumentFragment createFragment(String html,
{NodeValidator validator, NodeTreeSanitizer treeSanitizer}) {
if (Range.supportsCreateContextualFragment) {
return super.createFragment(
html, validator: validator, treeSanitizer: treeSanitizer);
}
// IE9 workaround which does not support innerHTML on Table elements.
var contextualHtml = '<table>$html</table>';
var table = new Element.html(contextualHtml, validator: validator,
treeSanitizer: treeSanitizer);
var fragment = new DocumentFragment();
fragment.nodes.addAll(table.nodes);
return fragment;
}
$endif
$!MEMBERS}