축소 과정 중의 이상한 행위

3774 단어 html-minifier

묘사

다음과 같은 태그가 포함된 HTML 파일이 있습니다.
<table>
  <tr>
    <td>
      <textarea />
    </td>
  </tr>
  <tr>
    <td>
      <label>foo</label>
    </td>
    <td>
      <input />
    </td>
    <td>
      <label>bar</label>
    </td>
  </tr>
</table>
나는 그것이 이렇게 축소될 것이라고 생각했다.
<table><tr><td><textarea /></td></tr><tr><td><label>foo</label></td><td><input></td><td><label>bar</label></td></tr></table>
하지만 내가 얻은 것은:
<table><tr><td><textarea>
    </td>
  </tr>
  <tr>
    <td>
      <label>foo</label>
    </td>
    <td>
      <input>
    </td>
    <td>
      <label>bar</label></td></tr></table>
(나는 너의 온라인 버전에서 이 모든 것을 테스트했다.http://kangax.github.io/html-minifier/)
내가 머리를 여러 번 긁은 후에, 나는 textarea 라벨이 자동으로 닫혀서는 안 된다는 것을 깨달았기 때문에, 나는 그것을 <textarea></textarea> 로 바꾸었고, 라벨은 축소되었다.이상하게도, 텍스트 영역에 도착했을 때 작업이 멈추었지만, 이후의 모든 것이 정상적이고 문서의 나머지 부분을 축소하는 것 같았다.
콘솔 로그를 검사할 때, 나는 이런 상황이 발생한 원인을 설명하는 오류나 경고를 찾을 수 없다.

토론 #1

'이상한 일'이후로 잘 이해가 안 돼요.너는 예를 하나 들 수 있니?나는 내 쪽에서 이 문제를 재현해 보려고 한다.

토론 #2

그럼요.내 말은 파일의 나머지 부분을 축소하는 것을 멈추는 것이 아니라 나중에 다시 축소하기 시작한다는 것이다. (출력의 마지막 줄 참조: <label>bar</label></td></tr></table>따라서 무엇이든 파일의 중간 부분을 축소하는 것을 막는 것은 앞으로 더 이상 문제가 되지 않을 것 같다.
또 다른 곤혹스러운 것은 이런 행위가 자동으로 닫히는 것만은 아니라는 것이다textarea.사실 이것은 적당히 축소될 것이다.
<table>
  <tr>
    <td>
      <textarea />
    </td>
  </tr>
</table>
산출:
<table><tr><td><textarea></td></tr></table>

토론 #셋

<textarea>에 따르면 specification에 따라 끝 표시가 필요하기 때문에 자동 끝 표시에서 벗어날 수 없다고 생각합니다.

토론 #4

@alexlamsl 동의textarea종료 라벨이 필요합니다.그러나 textarea 이후 묵묵히 코드를 축소하고 신비롭게 다시 축소하기 시작하기보다는 실패를 묵묵히 축소하는 것이 아니라 오류, 경고, 지시 코드가 무효라는 것이 나타나야 한다.html minifier를 처음 사용하기 시작했을 때, 표시가 잘못되어 오류가 발생했습니다.일단 우리가 이 문제들을 해결한다면, 나는 표기가 무효가 되면 오류가 발생할 것이라고 생각한다.그러나 오류나 경고가 없으면 문제가 있는지 확인하기 어렵다.
더 자세한 로그 기록이나 진단 로그 기록을 사용할 수 있습니까?어쩌면 도움이 될지도 몰라요.

토론 #5

나는 그것이 <textarea>의 내용처럼 실패할 것이라고 생각하지 않는다. 그러나 어쨌든 HTML 규범에 부합되는 특정한 용례가 있다면 PR은 항상 환영받을 것이다. wink:

토론 #6

그래. 그래서 나는 너의 도구가 잘못된 HTML를 처리하기 위해 설계된 것이 아니라는 것을 안다.사실 너는 최근에 털실을 완전히 제거한 것 같다(https://github.com/kangax/html-minifier/commit/22d134003df20d02c479edfb42fd931c6a21d608). HTMLHint의 기능 요청에서 이 점을 참조하여 태그가 잘못되었을 때 경고를 자동으로 해제합니다(https://github.com/yaniswang/HTMLHint/issues/142#issuecomment-235347685). 도구가 잘못된 태그를 지원할 수 있는지 묻는 것이 아닙니다.
이 경우 도구가 트리에 표시를 해석할 때 표시에 문제가 있음을 발견하고 (끝을 찾을 수 없음 <textarea> 표시를 찾을 수 없음) 더 자세한 로그 기록을 사용할 수 있습니다.만약 어떤 출력이 있다면, 우리는 구축 출력을 살펴보고, 왜 일이 우리가 예상한 방식대로 발전하지 않았는지 이해할 수 있다.나는 나의 예시가 매우 작다는 것을 알고 있지만, 이것은 우리의 코드 라이브러리에서 수천 줄의 HTML 중의 한 줄이며, 우리가 파이프를 구축하기 전에 오랫동안 작성한 오래된 코드들이다.

토론 #7

이 구석에 있는 사건을 보고하고 싶으면 이 프로젝트에 요청을 하세요.보시다시피 이 기능들은 단독 모듈로 옮겨졌습니다.

좋은 웹페이지 즐겨찾기