This repository was archived by the owner on Mar 13, 2018. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1616 var shadowHostTable = new WeakMap ( ) ;
1717 var nextOlderShadowTreeTable = new WeakMap ( ) ;
1818
19+ var spaceCharRe = / [ \t \n \r \f ] / ;
20+
1921 function ShadowRoot ( hostWrapper ) {
2022 var node = unwrap ( hostWrapper . impl . ownerDocument . createDocumentFragment ( ) ) ;
2123 DocumentFragment . call ( this , node ) ;
5658 } ,
5759
5860 getElementById : function ( id ) {
59- return this . querySelector ( '#' + id ) ;
61+ if ( spaceCharRe . test ( id ) )
62+ return null ;
63+ return this . querySelector ( '[id="' + id + '"]' ) ;
6064 }
6165 } ) ;
6266
Original file line number Diff line number Diff line change @@ -37,6 +37,26 @@ suite('ShadowRoot', function() {
3737 assert . equal ( sr . getElementById ( 'b' ) , b ) ;
3838 } ) ;
3939
40+ test ( 'getElementById with a non CSS ID' , function ( ) {
41+ var div = document . createElement ( 'div' ) ;
42+ var sr = div . createShadowRoot ( ) ;
43+ sr . innerHTML = '<a id=1 name=2></a><b id=2></b>' ;
44+ var a = sr . firstChild ;
45+ var b = sr . lastChild ;
46+
47+ assert . equal ( sr . getElementById ( 1 ) , a ) ;
48+ assert . equal ( sr . getElementById ( 2 ) , b ) ;
49+ } ) ;
50+
51+ test ( 'getElementById with a non ID' , function ( ) {
52+ var div = document . createElement ( 'div' ) ;
53+ var sr = div . createShadowRoot ( ) ;
54+ sr . innerHTML = '<a id="a b"></a>' ;
55+ var a = sr . firstChild ;
56+
57+ assert . isNull ( sr . getElementById ( 'a b' ) ) ;
58+ } ) ;
59+
4060 test ( 'olderShadowRoot' , function ( ) {
4161 var host = document . createElement ( 'div' ) ;
4262 host . innerHTML = '<a>a</a><b>b</b>' ;
You can’t perform that action at this time.
0 commit comments