BenoitZugmeyer / eslint-plugin-html

An ESLint plugin to extract and lint scripts from HTML files.
ISC License
436 stars 51 forks source link

Parsing error: Unterminated string constant when string includes "<body> #141

Closed domenic closed 3 years ago

domenic commented 3 years ago

Description

When linting the following document:

<!DOCTYPE html>
<meta charset="utf-8">
<title>innerHTML to empty string</title>
<link rel="help" href="https://w3c.github.io/DOM-Parsing/#dom-element-innerhtml">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<script>
  "use strict";

  test(() => {
    const doc = document.createElement("html");
    doc.innerHTML = "<head><title>foo</title></head><body>";

    doc.innerHTML = "";

    assert_true(doc.getElementsByTagName("body")[0] instanceof HTMLBodyElement);

  }, "Setting innerHTML to empty string");
</script>

I get

  13:21  error  Parsing error: Unterminated string constant

This goes away if I modify line 13 from

    doc.innerHTML = "<head><title>foo</title></head><body>";

to

    doc.innerHTML = "<head><title>foo</title></head>";

Setup configuration

Aditional context

This is occuring trying to upgrade jsdom from its current version as of today to the latest versions of ESLint and eslint-plugin-html.

BenoitZugmeyer commented 3 years ago

Thank you for the report! This looks like an issue with htmlparser2, so I reported the issue there.

BenoitZugmeyer commented 3 years ago

I upgraded htmlparser2, it should be fine now! Let me know how it works for you.