우선순위/심각도:
중간
플랫폼:
운영 체제
- Windows 11
브라우저
- Google Chrome 141.0.7390.123
Discourse
fb4bd7951aa6ae8c814df702807c12ccb77bd3fd
설명:
"리치 텍스트 에디터"는 “WYSIWYG”(What You See Is What You Get) 경험을 제공하도록 설계되어 있으며, 컴포저에서 보이는 내용이 게시된 게시물에서 렌더링되는 것과 정확히 일치해야 합니다.
일부 소스에서 복사한 텍스트는 일반 텍스트(text/plain) 외에도 포맷된 형태(text/html 타입)로 클립보드에 저장될 수 있습니다.
텍스트를 컴포저에 붙여넣을 때, 클립보드에 포맷된 데이터 타입이 존재하면 일반 텍스트 타입 대신 해당 데이터가 사용됩니다.
마크다운 문법의 최소주의적 특성 때문에, 텍스트에 우연히 마크다운 마크업과 유사한 내용이 포함되는 경우가 흔합니다.
포맷된 내용을 붙여넣을 때 우연한 마크다운 마크업이 포함되어 있으면, 게시된 게시물이 "리치 텍스트 에디터"에서 표시된 것과 다르게 렌더링됩니다.
재현 단계:
우연한 목록 마크업
- 다음 내용을 가진 HTML 파일을 생성합니다:
<html> <body> <br />- foo </body> </html> - 웹 브라우저에서 파일을 엽니다.
- 웹 페이지의 내용을 복사합니다.
- 게시물 컴포저를 엽니다.
- 컴포저를 “리치 텍스트 에디터” 모드로 전환합니다.
- 복사한 내용을 컴포저에 붙여넣습니다.
텍스트가 목록으로 렌더링되는 대신 그대로 붙여넣어졌습니다:
- foo
- 게시물을 게시합니다.
컴포저에서 본 것과 일치하지 않고, 내용이 비순서 목록으로 렌더링되었습니다:
- foo
우연한 코드 블록 마크업
- 다음 내용을 가진 HTML 파일을 생성합니다:
<html> <body> <span style="white-space: pre"> foo</span> </body> </html> - 웹 브라우저에서 파일을 엽니다.
- 웹 페이지의 내용을 복사합니다.
- 게시물 컴포저를 엽니다.
- 컴포저를 “리치 텍스트 에디터” 모드로 전환합니다.
- 복사한 내용을 컴포저에 붙여넣습니다.
텍스트가 코드 블록으로 렌더링되는 대신 그대로 붙여넣어졌습니다:
foo
- 게시물을 게시합니다.
컴포저에서 본 것과 일치하지 않고, 내용이 코드 블록으로 렌더링되었습니다:
foo
우연한 코드 블록 마크업 및 우연한 BBCode
- 다음 내용을 가진 HTML 파일을 생성합니다:
<html> <body> <span style="white-space: pre"> [foo]</span> </body> </html> - 웹 브라우저에서 파일을 엽니다.
- 웹 페이지의 내용을 복사합니다.
- 게시물 컴포저를 엽니다.
- 컴포저를 “리치 텍스트 에디터” 모드로 전환합니다.
- 복사한 내용을 컴포저에 붙여넣습니다.
텍스트가 그대로 붙여넣어졌습니다:
[foo]
- 게시물을 게시합니다.
컴포저에서 본 것과 일치하지 않고, 내용이 코드 블록으로 렌더링되었으며, 괄호 앞에 백슬래시가 추가되었습니다:
\[foo\]
추가 정보:
리치 텍스트 에디터가 “text/html” 타입의 붙여넣기된 내용에 포함된 겉보기 마크다운 마크업을 무시하는 것이 올바르다고 생각합니다. 이러한 내용의 의도적인 포맷은 HTML 태그로 정의되므로, 마크다운과 유사한 내용은 진정한 마크업보다는 우연한 일치일 가능성이 높습니다. 따라서 여기의 문제는 컴포저에서 렌더링되지 않는 것이 아니라, 게시 시 우연한 마크다운 문법이 렌더링되는 것입니다.
try.discourse.org의 "안전 모드"에서 이 결함을 재현할 수 있습니다.