개발자 도구 · HTML WYSIWYG 편집기
클립보드의 서식 있는 텍스트: 응용 프로그램 간에 서식이 이동하는 방식
· 배경
HTML 클립보드 내용 편집 가능
서식 있는 텍스트 복사본이 클립보드에 배치하는 여러 형식, 각 애플리케이션이 형식을 선택하는 방법, 붙여넣은 마크업이 복사된 것과 전혀 다른 이유를 설명합니다.
동일한 복사본, 세 가지 다른 붙여넣기 — 브라우저, 터미널 및 메일 클라이언트에 붙여넣은 콘텐츠로 열립니다.
대상이 다른 표현을 요청하기 때문에 하나의 복사된 단락이 브라우저 편집기에 서식이 지정된 콘텐츠로 도착하고 터미널에 서식이 지정되지 않은 문자로 도착할 수 있습니다. ToolAcre의 붙여넣기 처리기는 클립보드에 HTML과 일반 텍스트를 요청한 다음 브라우저의 기본 삽입을 신뢰하지 않고 고정 분기를 따릅니다.
HTML이 있는 경우 원본 리치 프래그먼트는 화면에 직접 입력되지 않습니다. 먼저 소독제를 통과합니다. HTML이 없으면 일반 텍스트가 삽입됩니다. 해당 로컬 규칙은 모든 메일 클라이언트, 운영 체제 또는 Office 제품군이 클립보드 데이터의 우선 순위를 지정하는 방식을 주장하지 않고 이 편집기의 동작을 설명합니다.
이 붙여넣기 핸들러는 텍스트/html를 읽고 텍스트/plain; 더 넓은 클립보드 맛은 증거 외부에 있습니다.
클립보드에는 하나의 선택 항목에 대한 여러 표현이 포함될 수 있습니다. 이 구현은 `text/html` 및 `text/plain`을 명시적으로 처리합니다. RTF, 이미지, 파일 참조 또는 애플리케이션별 형식을 열거하지 않으므로 지원되는 입력으로 암시해서는 안 됩니다.
두 문자열은 서로 다른 정보를 인코딩할 수 있습니다. 일반 텍스트에는 문자와 줄 바꿈이 포함되는 반면, HTML에는 단락, 목록, 강조, 링크 및 원치 않는 속성이 포함될 수 있습니다. ToolAcre는 사용 가능한 경우 구조를 선호하지만 삽입하기 전에 요소, 속성 및 URL 정책을 통해 구조 범위를 좁힙니다.
HTML 플레이버 작성자 — 소스 애플리케이션이 HTML 플레이버를 생성한다고 설명합니다. 이것이 바로 Word와 Google Docs 붙여넣기가 다르게 보이는 이유입니다.
소스 애플리케이션은 HTML 표현을 생성하므로 시각적으로 유사한 두 복사본이 서로 다른 래퍼와 프리젠테이션을 제공할 수 있습니다. ToolAcre는 생산자를 식별하지 않습니다. 하나의 일반 규칙이 적용됩니다. 즉, 지원되지 않는 래퍼와 속성은 출처에 관계없이 제거됩니다.
이는 출처가 없는 Word 또는 Google Docs 내부 카탈로그가 제품 소유권 주장이 되는 것을 방지합니다. 제거 목록은 이 파서가 거부한 내용을 작성자에게 정확하게 알려줍니다. 소스 애플리케이션에 대한 충실도가 중요한 경우 일반적인 기사 예제에 의존하기보다는 지원되는 환경에서 실제 설비를 캡처하여 테스트하십시오.
대상 선택 방법 - 기본 설정 순서 및 일반 텍스트로 붙여넣기 바로가기를 다룹니다.
목적지는 코드로 선택합니다. 여기서는 비어 있지 않은 HTML이 승리합니다. 그렇지 않으면 일반 텍스트가 사용됩니다. "일반 텍스트로 붙여넣기"를 위한 도구 모음 스위치가 없으며 저장소 소스는 키보드 단축키 동작을 정의하지 않습니다. 브라우저와 운영 체제는 이러한 제스처를 독립적으로 제공할 수 있습니다.
삭제 처리는 DataTransfer와 동일한 아이디어를 반영합니다. 기본값을 방지하고, HTML 및 일반 값을 읽고, `insertHTML` 이전에 HTML을 삭제하거나, `insertText`을 통해 일반 문자를 보냅니다. 붙여넣기와 달리 삭제 경로에는 동일한 세부 제거 횟수가 표시되지 않지만 새로 고침을 통해 표시되는 문서가 계속 업데이트됩니다.
플랫폼 조각 메타데이터는 이 구현에 의해 명시적으로 구문 분석되지 않습니다.
일부 플랫폼은 HTML 클립보드 조각을 메타데이터 또는 마커로 래핑하지만 ToolAcre에는 명명된 플랫폼 형식에 대한 명시적 파서가 포함되어 있지 않습니다. 토크나이저는 `getData("text/html")`에서 반환된 문자열을 확인하고 인식된 마크업을 처리합니다. 따라서 이 문서에서는 헤더 구문, 오프셋 및 운영 체제별 보장을 생략합니다.
래퍼가 주석으로 나타나면 주석이 제거됩니다. 메타데이터가 인식된 HTML 외부에 도착하면 동작을 테스트해야 합니다. 코드가 명명하지 않은 플랫폼 프로토콜에 대한 지지 또는 거부를 주장하기 위해서는 질적 가능성만으로는 충분하지 않습니다.
작업 예: 풍부한 클립보드 페이로드와 일반 전용 페이로드 비교
강력한 텍스트, 짧은 목록 및 https 링크가 포함된 민감하지 않은 단락을 복사하세요. 리치 페이스트는 허용된 구조를 유지하고, 소스 스타일을 제거하고, 링크에 rel을 추가할 수 있습니다. 소스와 제거 경고를 검사합니다. 그런 다음 HTML을 제공하지 않는 환경을 통해 일반 전용 표현을 붙여넣습니다.
일반 결과에는 선택 항목에 삽입된 문자가 포함됩니다. 모든 블록 구조는 원본 HTML에서 복원되지 않고 브라우저 편집 호스트에 의해 결정됩니다. 요소와 별도로 단어와 줄 경계를 비교합니다. 이 연습에서는 바이트 단위 복사가 아닌 표현 간 변환을 보여줍니다.
여기서 다루지 않는 내용 — 클립보드 API, 이미지, 플랫폼 바로가기 또는 권한 매트릭스
이 문서에서는 navigator.clipboard 프로그래밍, 권한 프롬프트, 클립보드 이미지, 파일, RTF, 모바일 바로가기 또는 크로스 플랫폼 기본 설정 매트릭스를 다루지 않습니다. 또한 가로채기된 리치 붙여넣기를 통해 임의의 적대적인 HTML을 안전하게 게시할 수 있다고 주장하지 않습니다.
ToolAcre의 살균제는 범위가 좁고 파서 차이를 인정합니다. 샌드박스는 로컬 미리보기에서 실행을 차단하지만 복사된 HTML은 해당 환경을 벗어납니다. 수신 서버에는 적절한 파서 기반 새니타이저 및 출력 정책이 필요하며, 사용자는 검토되지 않은 페이지에 비밀을 붙여넣는 것을 피해야 합니다.
요약: 붙여넣기는 복사본이 아닌 번역입니다. 모델을 요약하고 ToolAcre의 HTML WYSIWYG 편집기를 사용하여 번역 결과를 검사할 수 있는 방법을 설명합니다.
풍부한 붙여넣기는 번역입니다. 소스는 표현을 작성하고 대상은 하나를 선택하며 ToolAcre는 삽입하기 전에 선택한 HTML을 필터링합니다. 해당 순서를 이해하면 클립보드를 손상된 것으로 처리하지 않고도 서식이 사라질 수 있는 이유를 알 수 있습니다.
대표적인 고정물을 사용하고 결과 소스를 검사하며 정리로 인해 의미가 사라질 수 있는 경우 원본 콘텐츠를 보존합니다. 일반 페이스트는 프레젠테이션을 재설정하는 데 유용한 반면 리치 페이스트는 구조를 유지할 수 있습니다. 어느 경로도 목적지의 위생, 호환성 테스트 또는 편집 검토를 완화하지 않습니다.