dint-dev / universal_html

Cross-platform 'dart:html'.
https://pub.dev/packages/universal_html
Apache License 2.0
201 stars 60 forks source link

Descendant combinator cannot be used after nth-child #60

Closed simonkimi closed 1 year ago

simonkimi commented 2 years ago

Hi! Thanks for your awsome package., but I encountered some problems in the following tests. Any ideas?

index.html

<!DOCTYPE html>
<html lang="en">
<body>
<div id="root">
    <div>
        <p class="title">title1</p>
        <p class="content">p1</p>
    </div>
    <div>
        <p class="title">title2</p>
        <p class="content">p2</p>
    </div>
</div>
</body>
</html>
import 'dart:io';
import 'package:universal_html/parsing.dart';

void main() {
  final file = File('index.html').readAsStringSync();
  final document = parseHtmlDocument(file);

  print(document.body!.querySelector('#root div:nth-child(1)'));
  /*
  * <div>
        <p class="first">p1</p>
        <p class="second">p1</p>
    </div>*/

  print(document.body!.querySelector('#root div:nth-child(1)>.content'));
  /*
  * <p class="content">p1</p>*/

  print(document.body!.querySelector('#root div:nth-child(1) .content'));
  /*
  * Unhandled exception:
Null check operator used on a null value
#0      _matchesNthChildSelector (package:universal_html/src/html/dom/css_selectors.dart:65:37)
#1      _matchesSimpleSelector (package:universal_html/src/html/dom/css_selectors.dart:309:18)
#2      _matchesSelector (package:universal_html/src/html/dom/css_selectors.dart:148:8)
#3      _matchesSelector (package:universal_html/src/html/dom/css_selectors.dart:178:13)
#4      _matchesSelectorGroup (package:universal_html/src/html/dom/css_selectors.dart:242:9)
#5      _ElementOrDocument.querySelectorAll.<anonymous closure> (package:universal_html/src/html/dom/node.dart:763:11)
#6      _ElementOrDocument._forEachElementInTree (package:universal_html/src/html/dom/node.dart:787:10)
#7      _ElementOrDocument.querySelectorAll (package:universal_html/src/html/dom/node.dart:762:5)*/
}
terrier989 commented 1 year ago

Thank you for the good issue report! 👍 This was fixed in 2.2.1.