Maison interface Web Tutoriel H5 Exemple de code d'opération de copie H5

Exemple de code d'opération de copie H5

May 12, 2017 pm 12:02 PM

Au début, il n'y avait aucun contenu accessible à clipborad sur le web. Dans le passé, nous ne pouvions utiliser Flash que si nous souhaitions effectuer un copier/coller/couper. Mais voilà, le grand H5 ou W3C a lancé une ébauche sur le presse-papier de contrôle du H5. Les plus connues sont les deux API :

document.execCommand()
ClipboardEvent
Copier après la connexion

Découvrons-les étape par étape. Examinons d’abord l’utilisation du classique execCommand.

Opération de copie

copie d'entrée

Nous devons d'abord comprendre le processus de copie de base :

sélectionner

Copier ( command + c || ctrl + c)

execCommand suit également ce processus pour obtenir cet effet. Si nous voulons utiliser execCommand pour effectuer une copie, nous devons d'abord sélectionner l'élément que vous souhaitez copier.
Ici, une nouvelle API, window.getSelection(), sera également utilisée. Plus précisément :

getSelection() : utilisé pour obtenir le contenu de l'élément actuellement sélectionné. De manière générale, vous utilisez la souris pour sélectionner le contenu de la page.

toString() : Utilisé pour changer directement le contenu sélectionné en texte.

L'utilisation de base est :

// Afficher le texte sélectionné

window.getSelection().toString();
Copier après la connexion

Nous utilisons généralement cette API uniquement pour les fonctions auxiliaires. L'approche la plus courante consiste à créer dynamiquement des éléments d'entrée, puis à spécifier dynamiquement input[value]. Exécutez select(), select, puis exécutez copy.

# Le code total est

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);
}
Copier après la connexion

Regardez un exemple

Copiez-le comme vous le souhaitez

Bien sûr, si vous ne le faites pas Si vous ne souhaitez pas ajouter des éléments d'entrée de manière dynamique, si vous souhaitez copier directement l'élément DOM spécifié, que devez-vous faire ? Ici, vous devez utiliser la méthode liée à createRange() nouvellement fournie par HTML5. Bien sûr, getSelection() ci-dessus en fait également partie. Les API utilisées sont :

document.createRange() : utilisée pour créer un conteneur sélectionné. Renvoie une plage Objet. La compatibilité de cette API est également très bonne et elle est prise en charge aussi bien par les téléphones mobiles que par les PC.

selectNode(DOM) : renvoie la méthode montée sur l'objet de plage. Utilisé pour ajouter des éléments sélectionnés. Un seul

window.getSelection()

addRange(range) peut être ajouté : cette méthode est montée sous la méthode getSelection() et est utilisée pour effectuer la sélection d'éléments. (! Très important)

C'est toute l'API ci-dessus :

Regardez simplement la démo

Ici, je posterai le code clé :

  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();
Copier après la connexion

Un rappel supplémentaire ici est que l'opération de copie ci-dessus ne peut pas être effectuée automatiquement. Autrement dit, les comportements interactifs tels que la copie ne peuvent pas être exécutés sans aucune interaction de l'utilisateur. Par conséquent, l'événement click doit être utilisé ici (bien sûr, vous pouvez également utiliser d'autres événements à la place).

Utiliser le presse-papiers pour copier

Tout d'abord, le presse-papiers a été proposé récemment, sa compatibilité a donc encore besoin de temps pour être vérifiée. La compatibilité actuelle consiste à prendre en charge certains événements simples.
Si votre navigateur prend en charge le constructeur ClipboardEvent. L’opération de copie devient alors extrêmement simple.

// Bien entendu, le code suivant doit être placé en cas de clic d'une interaction.

var copyEvent = 
new
 ClipboardEvent('copy', {
            dataType: 'text/plain',
            data: 'My string'
        });
        document.dispatchEvent(copyEvent);
Copier après la connexion

Sinon, vous ne pouvez utiliser que l'API event.clipboardData renvoyée dans l'événement de copie du document pour définir ou obtenir les informations pertinentes. Nous obtenons l'objet clipboardData uniquement via des rappels d'événements :

e.clipboardData : ne peut être obtenu que via l'événement copier/coller/couper sur le document

document.addEvent
List
ener('copy', function(e){
    // 设置信息,实现复制
    e.clipboardData.setData('text/plain', 'Hello, world!');
    e.
prev
entDefault(); 
});
Copier après la connexion

clipboardData : Cet obj monte également deux API couramment utilisées au format

 : qui est le type MIME de base. Le plus couramment utilisé est text/plain. Pour un contenu spécifique, veuillez vous référer aux références MIME

data : Il s'agit du contenu de données spécifique inséré correspondant au type MIME

setData(format, data) : Définir les informations de données associées, principalement utilisées pour copier et couper les événements liés.

getData(format) : Généralement utilisé dans les événements de collage. Utilisé pour obtenir le contenu du presse-papiers. Cependant, vous devez définir le format de décodage correct (c'est-à-dire définir le type MIME correct). De plus, cette méthode ne peut être utilisée que dans l’événement Paste.

Ce qui précède semble être une brève introduction à l'API, puis je parlerai formellement de quelques informations pratiques. Si vous utilisez clipboardData pour implémenter un contenu de copie personnalisé. De cette façon, vous pouvez non seulement copier du texte simple sur la page, mais également copier des imagesinformations, etc.

Regardez le code

// Lier les événements interactifs sur le DOM spécifié

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;);
}
Copier après la connexion

couper et coller Related

Il semble également comme avant Assez simple. Bien sûr, certains étudiants peuvent se demander : n’existe-t-il pas d’autres événements tels que le copier-coller ? Est-il possible de faire la même chose ?
Euh...
Au début, je le pensais aussi, mais la réalité te donne souvent une douce caresse. Parce que, afin de vous empêcher d'obtenir des informations utilisateur de manière malveillante, dans Chrome, d'une manière générale, vous ne pouvez pas déclencher l'événement coller via document.execCommand('paste'). Cependant, dans la version mobile, la règle est que vous pouvez déclencher le copier-coller dans les éléments modifiables, mais la copie ne peut être déclenchée que dans les éléments sélectionnés valides.

根据上面的说法,我们可以通过利用 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();    });});
Copier après la connexion

方案总结

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

input 模式

createRange

clipboard 直接操作

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

【相关推荐】

1. 免费h5在线视频教程

2. HTML5 完整版手册

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment copier les paroles de QQ Music Comment copier les paroles Comment copier les paroles de QQ Music Comment copier les paroles Mar 12, 2024 pm 08:22 PM

Nous, les utilisateurs, devrions pouvoir comprendre la diversité de certaines fonctions lors de l'utilisation de cette plateforme. Nous savons que les paroles de certaines chansons sont très bien écrites. Parfois, nous l'écoutons même plusieurs fois et sentons que le sens est très profond. Donc, si nous voulons en comprendre le sens, nous voulons le copier directement et l'utiliser comme copywriting. Cependant, si nous voulons l'utiliser, nous le faisons. il vous reste encore besoin d'apprendre à copier des paroles. Je pense que vous n'avez tous aucune expérience de ces opérations, mais il est en effet un peu difficile de les utiliser sur votre téléphone portable. Donc, afin de vous donner une meilleure compréhension, aujourd'hui. l'éditeur est là pour vous aider. Une bonne explication de certaines des expériences d'exploitation ci-dessus. Si vous l'aimez également, venez jeter un œil avec l'éditeur.​

Exemples SVM en Python Exemples SVM en Python Jun 11, 2023 pm 08:42 PM

Support Vector Machine (SVM) en Python est un puissant algorithme d'apprentissage supervisé qui peut être utilisé pour résoudre des problèmes de classification et de régression. SVM fonctionne bien lorsqu'il s'agit de données de grande dimension et de problèmes non linéaires, et est largement utilisé dans l'exploration de données, la classification d'images, la classification de textes, la bioinformatique et d'autres domaines. Dans cet article, nous présenterons un exemple d'utilisation de SVM pour la classification en Python. Nous utiliserons le modèle SVM de la bibliothèque scikit-learn

Que signifie h5 ? Que signifie h5 ? Aug 02, 2023 pm 01:52 PM

H5 fait référence à HTML5, la dernière version de HTML. H5 est un langage de balisage puissant qui offre aux développeurs plus de choix et d'espace créatif. Son émergence favorise le développement de la technologie Web et rend l'interaction et l'effet des pages Web plus excellents. mûrit progressivement et devient populaire, je pense qu'il jouera un rôle de plus en plus important dans le monde d'Internet.

Touche de raccourci du calque de copie PS Touche de raccourci du calque de copie PS Feb 23, 2024 pm 02:34 PM

Dans les touches de raccourci du calque de copie PS, nous pouvons savoir que si vous souhaitez copier un calque lors de l'utilisation de PS, vous pouvez utiliser la touche de raccourci [Ctrl+J] pour une copie rapide. Cette introduction aux touches de raccourci pour copier des calques peut vous indiquer la méthode de fonctionnement spécifique. Voici le contenu détaillé, alors jetez-y un œil. Réponse de la touche de raccourci du calque de copie PS : [Ctrl+J] Méthode spécifique : 1. Ouvrez l'image dans PS et sélectionnez le calque qui doit être copié. 2. Appuyez simultanément sur [Ctrl+J] sur le clavier pour terminer la copie du calque. Autres méthodes de copie : 1. Après avoir ouvert l'image, maintenez le calque enfoncé et déplacez l'icône [Nouveau calque] vers le bas. 2. Après être passé à l'icône, lâchez prise. 3. La copie des calques est terminée.

Apprenez à utiliser les raccourcis copier-coller Apprenez à utiliser les raccourcis copier-coller Jan 13, 2024 pm 12:27 PM

Lorsque de nombreux utilisateurs utilisent des ordinateurs, s'ils rencontrent quelque chose qui doit être copié et collé, il est très difficile de copier avec la souris. Alors, comment utiliser les touches de raccourci pour copier et coller ? Raccourci Copier et Coller Comment utiliser la touche : 1. Touche Copier : Ctrl+C, sélectionnez le texte ou l'image à copier et appuyez sur la touche de raccourci. 2. Touche Coller : Ctrl+V Appuyez simplement sur la touche de raccourci directement à l'endroit où vous souhaitez coller.

Que dois-je ajouter à la touche de raccourci de copie ctrl ? Que dois-je ajouter à la touche de raccourci de copie ctrl ? Mar 15, 2024 am 09:57 AM

Sur les systèmes Windows, la touche de raccourci pour copier est Ctrl+C ; sur les systèmes Apple, la touche de raccourci pour copier est Commande+C ; sur les systèmes Linux, la touche de raccourci pour copier est Ctrl+Shift+C. Connaître ces touches de raccourci peut améliorer l'efficacité du travail de l'utilisateur et faciliter les opérations de copie de texte ou de fichiers.

Comment copier un tableau dans Excel et conserver le format original ? Comment copier un tableau dans Excel et conserver le format original ? Mar 21, 2024 am 10:26 AM

Nous utilisons souvent Excel pour traiter plusieurs données de tableau. Après avoir copié et collé le tableau défini, le format d'origine revient au format par défaut et nous devons le réinitialiser. En fait, il existe un moyen de faire en sorte que le tableau de copie Excel conserve le format d'origine. L'éditeur vous expliquera la méthode spécifique ci-dessous. 1. Étapes de l'opération de glissement et de copie de la touche Ctrl : utilisez la touche de raccourci [Ctrl+A] pour sélectionner tout le contenu du tableau, puis déplacez le curseur de la souris vers le bord du tableau jusqu'à ce que le curseur mobile apparaisse. Appuyez et maintenez la touche [Ctrl], puis faites glisser le tableau vers la position souhaitée pour terminer le déplacement. Il convient de noter que cette méthode ne fonctionne que sur une seule feuille de calcul et ne peut pas être déplacée entre différentes feuilles de calcul. 2. Étapes de collage sélectif : appuyez sur la touche de raccourci [Ctrl+A] pour sélectionner tous les tableaux, puis appuyez sur

Comment copier et déplacer des éléments par glisser-déposer dans Vue ? Comment copier et déplacer des éléments par glisser-déposer dans Vue ? Jun 25, 2023 am 08:35 AM

Vue est un framework JavaScript populaire qui fournit une fonction glisser-déposer pratique, nous permettant de copier et de déplacer facilement des éléments. Voyons ensuite comment copier et déplacer des éléments par glisser-déposer dans Vue. 1. Implémentation de base des éléments glisser-déposer Pour copier et déplacer des éléments glisser-déposer dans Vue, vous devez d'abord implémenter la fonction glisser-déposer de base de l'élément. La méthode spécifique d'implémentation est la suivante : Ajoutez les éléments qui doivent être glissés dans le modèle : &lt;divclass="drag-elem"

See all articles