웹 프론트엔드 H5 튜토리얼 H5 복사 작업 예제 코드

H5 복사 작업 예제 코드

May 12, 2017 pm 12:02 PM

처음에는 웹에서 클립보드로 접근할 수 있는 콘텐츠가 없었습니다. 과거에는 복사/붙여넣기/잘라내기를 수행하려는 경우에만 플래시를 사용할 수 있었습니다. 그러나 이제 훌륭한 H5 또는 W3C는 H5 제어 클립보드에 대한 초안을 출시했습니다. 가장 유명한 것은

document.execCommand()
ClipboardEvent
로그인 후 복사

두 가지 API입니다. 단계별로 살펴보겠습니다. 먼저 고전적인 execCommand의 사용법을 살펴보겠습니다.

복사 작업

복사 입력

먼저 기본 복사 과정을 이해해야 합니다.

복사( command + c || ctrl + c)

execCommand도 이 프로세스를 따라 이 효과를 얻습니다. execCommand를 사용하여 복사를 실행하려면 먼저 복사하려는 요소를 선택해야 합니다.
여기서 새로운 API인 window.getSelection()도 사용됩니다. 구체적으로:

getSelection(): 현재 선택된 요소의 콘텐츠를 가져오는 데 사용됩니다. 일반적으로 마우스를 사용하여 페이지의 콘텐츠를 선택합니다.

toString(): 선택한 내용을 텍스트로 직접 변경하는 데 사용됩니다.

기본 사용법은 다음과 같습니다.

// 선택한 텍스트 출력

window.getSelection().toString();
로그인 후 복사

일반적으로 이 API는 보조 기능에만 사용됩니다. 가장 일반적인 접근 방식은 입력 요소를 동적으로 생성한 다음 입력[값]을 동적으로 지정하는 것입니다. select()를 실행하고 선택 후 복사를 실행합니다.

# 전체 코드는

function copyContent(elementId) {
  // 动态创建 input 元素
  var aux = document.createElement("input");
  // 获得需要复制的内容
  aux.
set
Attribute("value", document.getElementById(elementId).innerHTML);
  // 添加到 DOM 元素中
  document.body.app
end
Child(aux);
  // 执行选中
  // 注意: 只有 input 和 textarea 可以执行 select() 方法.
  aux.select();
  
  // 获得选中的内容
    var content = window.getSelection().toString();
    
  // 执行复制命令
  document.execCommand("copy");
  // 将 input 元素移除
  document.body.removeChild(aux);
}
로그인 후 복사

예제 보기

원하는 대로 복사

물론 그렇지 않다면 입력 요소를 동적으로 추가하고 싶다면 지정된 DOM 요소를 직접 복사하면 어떻게 해야 할까요? 여기서는 HTML5에서 새롭게 제공하는 createRange() 관련 메소드를 사용해야 합니다. 물론 위의 getSelection()도 그 중 하나입니다. 사용되는 API는 다음과 같습니다.

document.createRange(): 선택한 컨테이너를 만드는 데 사용됩니다. 객체 범위를 반환합니다. 이 API의 호환성도 매우 좋으며 휴대폰과 PC 모두에서 지원됩니다.

selectNode(DOM): Object 범위에 탑재된 메서드를 반환합니다. 선택한 요소를 추가하는 데 사용됩니다.

window.getSelection()

addRange(range) 하나만 추가할 수 있습니다. 이 메소드는 getSelection() 메소드 아래에 마운트되며 요소 선택을 수행하는 데 사용됩니다. (! 매우 중요)

위 API는 이게 전부입니다.

데모만 시청하세요

여기서 키 코드를 게시하겠습니다:

  var copyDOM = document.querySelector('#selector');  
  var range = document.createRange();  
  // 选中需要复制的节点
  range.selectNode(copyDOM);
  // 执行选中元素
  window.getSelection().addRange(range);
  // 执行 copy 操作
var successful = document.execCommand('copy');  
  try {  
    var msg = successful ? 'successful' : 'unsuccessful';  
    console.log('copy is' + msg);  
  } catch(err) {  
    console.log('Oops, unable to copy');  
  }
// 移除选中的元素
  window.getSelection().remove
All
Ranges();
로그인 후 복사

여기에 필요합니다. 추가로 다시 말씀드리지만, 위의 복사 작업은 자동으로 수행할 수 없습니다. 즉, 사용자 상호작용 없이는 복사와 같은 대화형 동작을 수행할 수 없습니다. 따라서 여기서는 클릭이벤트를 사용해야 합니다(물론 다른 이벤트를 대신 사용할 수도 있습니다).

클립보드를 사용하여 복사

우선 클립보드가 최근에 제안되었기 때문에 호환성은 아직 검증 시간을 기다려야 합니다. 현재 호환성은 몇 가지 간단한 이벤트를 지원하는 수준입니다.
브라우저가 ClipboardEvent 생성자를 지원하는 경우. 그러면 복사 작업이 매우 간단해집니다.

// 물론 상호작용의 클릭 이벤트에는 다음 코드가 배치되어야 합니다.

var copyEvent = 
new
 ClipboardEvent('copy', {
            dataType: 'text/plain',
            data: 'My string'
        });
        document.dispatchEvent(copyEvent);
로그인 후 복사

그렇지 않은 경우에는 문서의 복사 이벤트에서 반환된 event.clipboardData API를 통해서만 관련 정보를 설정하거나 가져올 수 있습니다. 이벤트 콜백을 통해서만 clipsboardData 객체 를 얻을 수 있습니다:

e.clipboardData:

document.addEvent
List
ener('copy', function(e){
    // 设置信息,实现复制
    e.clipboardData.setData('text/plain', 'Hello, world!');
    e.
prev
entDefault(); 
});
로그인 후 복사

clipboardData는 문서의 복사/붙여넣기/잘라내기 이벤트를 통해서만 얻을 수 있습니다. 이 obj 또한 일반적으로 사용되는 두 가지 API

형식인 기본 MIME 유형을 마운트합니다. 가장 일반적으로 사용되는 것은 text/plain입니다. 구체적인 내용은 MIME 참조를 참고하세요.

data: MIME 타입에 대응하여 넣은 특정 데이터 내용입니다.

setData(format, data): 관련 데이터 정보를 설정하며 주로 사용됩니다. 카피앤컷 관련 이벤트를 위해

getData(format): 일반적으로 붙여넣기 이벤트에 사용됩니다. 클립보드의 내용을 가져오는 데 사용됩니다. 그러나 올바른 디코딩 형식을 개발해야 합니다(즉, 올바른 MIME 유형이 설정됨). 또한 이 방법은 붙여넣기 이벤트에서만 사용할 수 있습니다.

위 내용은 API에 대한 간략한 소개인 것 같고, 그다음에 본격적으로 실용적인 정보에 대해 말씀드리겠습니다. ClipboardData를 사용하여 사용자 정의 복사 콘텐츠를 구현하는 경우. 이런 방법으로 페이지의 간단한 텍스트 복사는 물론, 이미지정보 등도 복사할 수 있습니다.

코드 살펴보기

//지정된 DOM에 인터랙티브 이벤트 바인딩

DOM.addEventListener('click',function(){},false){
    // 添加 copy 内容
    document.addEventListener('copy',function copy (e) {
            msg = `<${msg}/>`;
            e.clipboardData.setData(&#39;text/plain&#39;, msg);
            e.preventDefault();
        })
    // 执行 copy 命令
    document.execCommand(&#39;copy&#39;);
    // 移除绑定事件
    document.removeEventListener(&#39;copy&#39;,&#39;copy&#39;);
}
로그인 후 복사

잘라내기 및 붙여넣기 관련

전면은 꽤 단순해 보입니다. 의. 물론, 일부 학생들은 잘라내기와 붙여넣기 같은 다른 이벤트가 있지 않을까라고 생각할 수도 있습니다. 똑같이 할 수 있습니까?
음...
나도 처음에는 그렇게 생각했지만 현실은 부드러운 어루만짐을 주는 경우가 많다. 왜냐하면 악의적으로 사용자 정보를 얻는 것을 방지하기 위해 Chrome에서는 일반적으로 document.execCommand('paste')를 통해 붙여넣기 이벤트를 실행할 수 없기 때문입니다. 그러나 모바일 버전에서는 편집 가능한 요소에서 잘라내기 및 붙여넣기를 실행할 수 있지만 복사는 선택한 유효한 요소에서만 실행될 수 있다는 규칙이 있습니다.

根据上面的说法,我们可以通过利用 paste 的相关方法,来具体应用到实践中。比如,防止用户粘贴信息。这特别适用于那些做题页面,防止你查资料然后 copy 相关答案。

document.addEventListener(&#39;paste&#39;,function copy (e) {            e.preventDefault();        });
当然,还有更狠的,直接禁止 copy,paste,cut 事件。
[&#39;cut&#39;, &#39;copy&#39;, &#39;paste&#39;].forEach((event)=>{    document.addEventListener(event, (e)=>{        e.preventDefault();    });});
로그인 후 복사

方案总结

HTML5 现在能完美提供给我们的应该就是 copy 事件的使用,对于市面上的 clipboard.js 差不多也是运用上述的知识点。根据上面的描述,可以了解到,想要实现复制功能有三种渐进退化方案。以下兼容性由高到低:

input 模式

createRange

clipboard 直接操作

现在 React 比较火,这里我简单的写了一个 copybtn 组件。具体的使用 README 已经写清楚了,如果有什么不懂的地方可以 @我。

【相关推荐】

1. 免费h5在线视频教程

2. HTML5 完整版手册

3. php.cn原创html5视频教程

위 내용은 H5 복사 작업 예제 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

QQ뮤직 가사 복사하기 가사 복사하기 QQ뮤직 가사 복사하기 가사 복사하기 Mar 12, 2024 pm 08:22 PM

우리 사용자는 이 플랫폼을 사용할 때 일부 기능의 다양성을 이해할 수 있어야 합니다. 우리는 일부 노래의 가사가 매우 잘 쓰여져 있다는 것을 알고 있습니다. 때로는 여러 번 들어도 그 의미가 매우 심오하다고 느낄 때가 있기 때문에 그 의미를 이해하고 싶으면 직접 복사해서 카피라이팅으로 사용하고 싶을 때도 있습니다. 가사 복사하는 방법만 배우면 됩니다. 이러한 작업은 모두가 익숙할 것이라고 생각하지만 실제로 휴대폰에서 작업하는 것은 다소 어렵습니다. 따라서 오늘 편집자는 더 나은 이해를 돕기 위해. 위의 운영 경험 중 일부에 대한 좋은 설명이 있습니다. 마음에 드시면 꼭 오셔서 편집자와 함께 살펴보세요.​

Python의 SVM 예제 Python의 SVM 예제 Jun 11, 2023 pm 08:42 PM

Python의 SVM(Support Vector Machine)은 분류 및 회귀 문제를 해결하는 데 사용할 수 있는 강력한 지도 학습 알고리즘입니다. SVM은 고차원 데이터와 비선형 문제를 처리할 때 탁월한 성능을 발휘하며 데이터 마이닝, 이미지 분류, 텍스트 분류, 생물정보학 및 기타 분야에서 널리 사용됩니다. 이번 글에서는 Python에서 분류를 위해 SVM을 사용하는 예를 소개하겠습니다. scikit-learn 라이브러리의 SVM 모델을 사용하겠습니다.

h5은 무슨 뜻인가요? h5은 무슨 뜻인가요? Aug 02, 2023 pm 01:52 PM

H5는 HTML의 최신 버전인 HTML5를 말하며, H5 기술과 마찬가지로 개발자에게 더 많은 선택권과 창의적인 공간을 제공하는 강력한 마크업 언어입니다. 점차 성숙해지고 대중화되면서 인터넷 세계에서 점점 더 중요한 역할을 담당하게 될 것이라고 믿습니다.

PS 복사 레이어 단축키 PS 복사 레이어 단축키 Feb 23, 2024 pm 02:34 PM

PS 복사 레이어 단축키를 보면 PS 사용 시 레이어를 복사하고 싶을 때 [Ctrl+J] 단축키를 사용하면 빠르게 복사할 수 있다는 것을 알 수 있습니다. 레이어 복사 단축키에 대한 소개를 통해 구체적인 작업 방법을 알려드릴 수 있으니, 자세한 내용은 아래에서 확인하시기 바랍니다. PS 복사 레이어 바로가기 키 답변: [Ctrl+J] 구체적인 방법: 1. PS에서 이미지를 열고 복사해야 하는 레이어를 선택합니다. 2. 키보드의 [Ctrl+J]를 동시에 누르면 레이어 복사가 완료됩니다. 기타 복사 방법: 1. 이미지를 연 후 해당 레이어를 길게 누른 후 [새 레이어] 아이콘을 아래로 이동하세요. 2. 아이콘으로 이동한 후 손을 떼세요. 3. 레이어 복사가 완료되었습니다.

복사-붙여넣기 단축키 사용법 알아보기 복사-붙여넣기 단축키 사용법 알아보기 Jan 13, 2024 pm 12:27 PM

많은 사용자들이 컴퓨터를 사용하다 보면 복사해서 붙여넣어야 하는 부분이 생기면 마우스로 복사하기가 매우 번거롭습니다. 그렇다면 복사하여 붙여넣기 단축키를 어떻게 사용하는지 자세한 튜토리얼을 살펴보세요~ 단축키 복사 및 붙여넣기 키 사용 방법: 1. 복사 키: Ctrl+C, 복사할 텍스트 또는 이미지를 선택한 후 단축키를 누릅니다. 2. 붙여넣기 키: Ctrl+V 붙여넣고 싶은 곳에서 바로 단축키를 누르면 됩니다.

복사단축키 Ctrl에 무엇을 추가해야 하나요? 복사단축키 Ctrl에 무엇을 추가해야 하나요? Mar 15, 2024 am 09:57 AM

Windows 시스템에서 복사할 단축키는 Ctrl+C이고, Linux 시스템에서는 복사할 단축키는 Ctrl+Shift+C입니다. 이러한 바로 가기 키를 알면 사용자의 작업 효율성이 향상되고 텍스트 또는 파일 복사 작업이 쉬워집니다.

Excel에서 테이블을 복사하고 원본 형식을 유지하는 방법은 무엇입니까? Excel에서 테이블을 복사하고 원본 형식을 유지하는 방법은 무엇입니까? Mar 21, 2024 am 10:26 AM

우리는 여러 테이블 데이터를 처리하기 위해 엑셀을 자주 사용하는데, 설정된 테이블을 복사하여 붙여넣은 후 원래 형식이 기본값으로 돌아가므로 이를 재설정해야 합니다. 실제로 엑셀 복사표를 원본 형식으로 유지하는 방법이 있습니다. 구체적인 방법은 아래에서 편집자가 설명해 드리겠습니다. 1. Ctrl 키 드래그 및 복사 작업 단계: 단축키 [Ctrl+A]를 사용하여 모든 테이블 내용을 선택한 다음 움직이는 커서가 나타날 때까지 마우스 커서를 테이블 가장자리로 이동합니다. [Ctrl] 키를 누른 채 테이블을 원하는 위치로 드래그하면 이동이 완료됩니다. 이 방법은 단일 워크시트에서만 작동하며 다른 워크시트 간에 이동할 수 없다는 점에 유의해야 합니다. 2. 선택 붙여넣기 방법: [Ctrl+A] 단축키를 눌러 모든 테이블을 선택하고,

Vue에서 드래그 앤 드롭 요소를 복사하고 이동하는 방법은 무엇입니까? Vue에서 드래그 앤 드롭 요소를 복사하고 이동하는 방법은 무엇입니까? Jun 25, 2023 am 08:35 AM

Vue는 편리한 드래그 앤 드롭 기능을 제공하여 요소를 쉽게 복사하고 이동할 수 있는 인기 있는 JavaScript 프레임워크입니다. 다음으로 Vue에서 드래그 앤 드롭 요소를 복사하고 이동하는 방법을 살펴보겠습니다. 1. 드래그 앤 드롭 요소의 기본 구현 Vue에서 드래그 앤 드롭 요소를 복사하고 이동하려면 먼저 해당 요소의 기본 드래그 앤 드롭 기능을 구현해야 합니다. 구체적인 구현 방법은 다음과 같습니다. 템플릿에서 드래그해야 하는 요소를 추가합니다: &lt;divclass="drag-elem"

See all articles