Sichererer und entsperrter Zugriff auf die Zwischenablage für Text und Bilder
Aktualisiert
En los últimos años, los BrowserConcepto de Navegadores¿Qué son los Navegadores?Los Navegadores son herramientas informáticas que utilizamos para, normalmente, navegar por Internet y visitar cualquier página web, al mismo tiempo de para hacer otras tareas como ver documentos, observar vídeos o reproducir contenido multimedia de cualquier tipo. Son un tipo de software sencillamente usual y bastante utilizado hoy en día.Insistimos en que es algo que se utiliza con mucha frecuencia, puesto que moverse por Internet Plus han utilizado
document.execCommand ()
para interacciones con el portapapeles. Aún cuando es ampliamente compatible, este método de cortar y pegar tenía un costo: el acceso al portapapeles era sincrónico y solo podía leer y escribir en el DOM.
Eso está bien para pequeños fragmentos de texto, pero hay muchos casos en los que bloquear la página para la transferencia del portapapeles es una mala experiencia. Es viable que se necesite una desinfección o decodificación de imágenes que requiera mucho tiempo antes de que el InhaltEl contenido puede ser muy difícil de definir con precisión. Es una definición que se refiere a las declaraciones contenidas en un documento o publicación de cualquier tipo y puede incluir las tecnologías de la información y la comunicación. Esto cubre todos los tipos de medios como imágenes y texto. A parte de esto, en el campo de la optimización de motores de búsqueda, los términos duplicar contenido, contenido único, Plus se pueda pegar de forma segura. Es viable que el BrowserUn navegador (además: browser) es una herramienta informática que te permite ver documentos y datos y navegar por la red. Los navegadores pueden mostrar distintos tipos de recursos de información; principalmente documentos HTML, a pesar de todo, además son posibles otros tipos de archivos y contenido multimedia, como PDF, JPEG, MPEG, GIF o el lenguaje de meta marcado. A través el uso de complementos especiales y la configuración respectivo, los Plus necesite cargar o incorporar recursos vinculados desde un documento pegado. Eso bloquearía la página mientras espera en el disco o la red. Imagine agregar permisos a la mezcla, requiriendo que el navegador bloquee la página mientras solicita acceso al portapapeles. A la vez, los permisos establecidos alrededor
document.execCommand () Für die Zwischenablage sind die Interaktionen lose definiert und variieren zwischen den Browsern.
das
Asynchrone Zwischenablage-API
Behebt diese Probleme, indem ein genau definiertes Berechtigungsmodell bereitgestellt wird, das die Seite nicht sperrt. Kürzlich angekündigte Safari Unterstützung dafür in Version 13.1. Con eso, los principales navegadores disponen un nivel básico de soporte. A la hora de escribir estas líneas, Firefox solo admite texto; y el soporte de imágenes está limitado a PNG en algunos navegadores. Si está interesado en usar la APIConcepto de API¿Qué es una API?Una API, siglas de Application Programming Interface o Interfaz de Programación de Apps, es un recopilatorio de código que se puede emplear para que varias apps se comuniquen entre ellas. Es algo que realiza una tarea equivalente a la interfaz de usuario al momento de promover la interacción entre persona y programa, solo que aplicado única y exclusivamente dentro del entorno del software.Aún cuando suene Plus,
Konsultieren Sie eine Browser-Support-Tabelle
vor dem Fortfahren.
Osten PostConcepto de Post¿Qué es un Post?Un Post es todo aquel contenido, sea post, opinión, noticia u otro género, que un autor publica en un blog. Este puede ser de carácter corporativo o meramente ocioso; pero siempre tiene como meta arrojar información o reflejar una idea, al mismo tiempo de facilitar que los usuarios encuentren la web donde se recoge por medio de de buscadores y demás plataformas online.Generalmente, se han Plus explica cómo escribir texto e imágenes y cómo leerlos desde el portapapeles. Este post no cubre Funktionsrichtlinie für die Zwischenablage welches auf Chrome 85 gelandet ist.
La API Async Clipboard se limita a manejar texto e imágenes. Chrome 84 introduce una función experimental que posibilita que el portapapeles maneje cualquier tipo de datos arbitrario.
Kopieren: Daten in die Zwischenablage schreiben
writeText ()
So kopieren Sie Text in die Beschriftung der Zwischenablage writeText (). Puesto que esta API es asincrónica, la writeText () Die Funktion gibt ein Versprechen zurück, das aufgelöst oder abgelehnt wird, je nachdem, ob der übergebene Text korrekt kopiert wurde:
asynchron Funktion copyPageUrl() {
try {
erwarten Navigator.Zwischenablage.writeText(location.href);
console.Log('Page UrlEl URL (Localizador Uniforme de Recursos), es una dirección definida que apunta a la posición de un archivo en un servidor y lo recupera. Las URL se introducen en un navegador web para ingresar a documentos en la web o se incrustan como hipervínculos dentro de un documento. Se puede usar un Permalink para que una URL esté disponible de forma permanente. Componentes de una URL • prefijo de protocolo Plus copied to clipboard');
} catch (err) {
console.Error('Failed to Kopieren¿Qué es un copy?Texto de carácter publicitario destinado a llamar la atención del cliente potencial y promocionar un producto o servicio determinado. Plus: ', err);
}
}
schreiben()
Wirklich, writeText () Es ist nur eine bequeme Methode für das Generikum schreiben ()
método, que además le posibilita copiar imágenes al portapapeles. Me gusta writeText (), ist asynchron und gibt ein Versprechen zurück.
Para escribir una imagen en el portapapeles, requiere la imagen como
Klecks. Una forma de hacer esto es solicitando la imagen de un ServerLos servidores son ordenadores centrales y potentes dentro del campo de la tecnología de la información que procesan y proporcionan software y archivos en una red. Desde el punto de vista de un cliente, varios ordenadores en una red pueden ponerse en contacto con el servidor central para conseguir la información solicitada. En la arquitectura cliente-servidor, el servidor puede ser un software que proporciona un servicio y se ejecuta en Plus mit fetch (), después llamando
blob () en la solución.
Solicitar una imagen del servidor puede no ser deseable o viable por una gama de razones. Por suerte, además puede dibujar la imagen en un lienzo y llamar al lienzo ‘
toBlob ()
Methode.
Übergeben Sie dann ein Array von ClipboardItem Objekte als Parameter für die schreiben ()
método. Hoy en día, solo puede pasar una imagen al mismo tiempo, pero esperamos agregar soporte para diversos imágenes en el futuro. ClipboardItem toma un objeto con el tipo MimeMIME son las siglas de Multi-Purpose Internet Mail Extensions. En su versión original, definió ciertos tipos de datos de archivos adjuntos de email para que estos archivos pudieran leerse y ejecutarse cuando no estuvieran en formato ASCII. Las especificaciones MIME incluyen varios formatos multimedia como archivos de imagen, vídeo, texto y numerosos formatos de aplicación. Información general MIME ha demostrado ser sobre todo útil en el tratamiento de tipos de Plus de la imagen como clave y el blob como valor. Para objetos Blob obtenidos de fetch () oder canvas.toBlob (), das blob.type La propiedad contiene de forma automática el tipo MIME correcto para una imagen.
try {
const imgURL = '/images/generic/file.png';
const Daten = erwarten holen(imgURL);
const Klecks = erwarten Daten.Klecks();
erwarten Navigator.Zwischenablage.write([
new ClipboardItem({
[Klecks.Art]: Klecks
})
]);
console.Log('Image copied.');
} catch (err) {
console.Error(err.Süßkartoffel, err.Botschaft);
}
Das VeranstaltungConcepto de Evento¿Qué es un Evento?Un Evento es una actividad de carácter social que suele tener cierta proyección a nivel público y, de esta manera, suscita el interés de un determinado sector relacionado con la temática o con la razón por el que se celebra. Es un tipo de acto que suele tener mucha repercusión a nivel empresarial.Podemos hallar distintos tipos de eventos, desde los deportivos hasta los empresariales, pasando Plus de copia
Für den Fall, dass ein Benutzer eine Zwischenablagekopie initiiert, werden ihm nicht-textuelle Daten als Blob bereitgestellt. das
Kopieren Veranstaltung
beinhaltet a clipboardData con los ítems que ya están en el formato correcto, eliminando la necesidad de crear manualmente un Blob. Llamada Standard verhindern () para evitar el comportamiento predeterminado a favor de su propia lógica, después copie el contenido en el portapapeles. Lo que no se cubre en este ejemplo es cómo recurrir a API anteriores cuando la API del Portapapeles no es compatible. Cubriré eso en Detección de características, más adelante en este post.
Dokument.addEventListener('copy', asynchron (und) => {
und.preventDefault();
try {
Lassen clipboardItems = [];
zum (const Artikel of und.clipboardData.Artikel) {
wenn (!Artikel.Art.startsWith('image/')) {
fortsetzen;
}
clipboardItems.drücken(
new ClipboardItem({
[Artikel.Art]: Artikel,
})
);
erwarten Navigator.Zwischenablage.write(clipboardItems);
console.Log('Image copied.');
}
} catch (err) {
console.Error(err.Süßkartoffel, err.Botschaft);
}
});
Einfügen: Daten aus der Zwischenablage lesen
Lies den Text ()
Rufen Sie an, um Text aus der Zwischenablage zu lesen navigator.clipboard.readText () und warten Sie, bis das zurückgegebene Versprechen gelöst ist:
asynchron Funktion getClipboardContents() {
try {
const Text = erwarten Navigator.Zwischenablage.readText();
console.Log('Pasted content: ', Text);
} catch (err) {
console.Error('Failed to read clipboard contents: ', err);
}
}
lesen()
das navigator.clipboard.read () El método además es asincrónico y devuelve una Promesa. Para leer una imagen del portapapeles, obtenga una lista de
ClipboardItem
objetos, después iterar sobre ellos.
Jeder ClipboardItem puede contener su contenido en diferentes tipos, por lo que deberá iterar sobre el listado de tipos, nuevamente utilizando un für ... von Band. Rufen Sie für jeden Typ an getType () con el tipo actual como argumento para conseguir el Blob respectivo. Como antes, este código no está vinculado a imágenes y funcionará con otros tipos de archivos futuros.
asynchron Funktion getClipboardContents() {
try {
const clipboardItems = erwarten Navigator.Zwischenablage.read();
zum (const clipboardItem of clipboardItems) {
zum (const Art of clipboardItem.Typen) {
const Klecks = erwarten clipboardItem.getType(Art);
console.Log(Url.createObjectURL(Klecks));
}
}
} catch (err) {
console.Error(err.Süßkartoffel, err.Botschaft);
}
}
Das Einfügeereignis
Como se señaló previamente, hay planes para introducir eventos para que funcionen con la API del Portapapeles, pero por ahora puede utilizar el existente Einfügen Veranstaltung. Funktioniert hervorragend mit neuen asynchronen Methoden zum Lesen von Text in der Zwischenablage. Wie bei der Kopieren Ereignis, vergessen Sie nicht anzurufen Standard verhindern ().
Dokument.addEventListener('paste', asynchron (und) => {
und.preventDefault();
const Text = erwarten Navigator.Zwischenablage.readText();
console.Log('Pasted text: ', Text);
});
Wie bei der Kopieren Wenn Sie auf ältere APIs zurückgreifen, wenn die Zwischenablage-API nicht unterstützt wird, wird dies in der Funktionserkennung behandelt.
Manejo de diversos tipos de archivos
La mayoría de las implementaciones colocan diversos formatos de datos en el portapapeles para una sola operación de corte o copia. Hay dos razones para ello: como desarrollador de aplicaciones, no tiene forma de conocer las capacidades de la aplicación en la que un usuario desea copiar texto o imágenes, y muchas aplicaciones admiten pegar datos estructuradosDatos Estructurados es una definición utilizado en la parte semántica de Internet. Permite a los motores de búsqueda posicionar con precisión la información estructurada de las páginas web y enriquecerla. Definición de datos estructurados Para poder trabajar con datos estructurados, los operadores web deben usar formatos y márgenes de beneficio especiales definidos de forma uniforme. El marco de descripción de recursos (RDF), varios microformatos, microdatos y resaltadores de datos son Plus como texto sin formato. Esto se presenta a los usuarios con un Bearbeiten Menüpunkt mit einem Namen wie Stil einfügen und anpassen oder Einfügen ohne Formatierung.
El siguiente ejemplo muestra cómo hacer esto. Este ejemplo utiliza fetch () para conseguir datos de imagen, pero además podría provenir de un
oder die native Dateisystem-API.
Funktion Kopieren() {
const Bild = erwarten holen('kitten.png');
const Text = new Klecks(['Cute sleeping kitten'], {Art: 'text/plain'});
const Artikel = new ClipboardItem({
'text/plain': Text,
'image/png': Bild
});
erwarten Navigator.Zwischenablage.write([Artikel]);
}
Sicherheit und Berechtigungen
El acceso al portapapeles siempre ha supuesto un obstáculo de seguridad para los navegadores. Sin los permisos adecuados, una página podría copiar silenciosamente todo Art des InhaltsEl tipo de contenido se refiere al contenido de un archivo que se transfiere mediante de HTTP y se clasifica según una estructura de dos partes. Esta clasificación está estandarizada y publicada por la IANA (Internet Assigned Numbers Authority, que supervisa la asignación global de direcciones IP). Una definición alternativo es MIME. En esta circunstancia, el contenido de los datos se especifica según el MIME (Multipurpose Internet Mail Extensions). El Plus malicioso en el portapapeles de un usuario que produciría resultados catastróficos al pegarlo. Imagina una página web que copia silenciosamente rm -rf / oder ein
Bild der Dekompressionspumpe
in Ihre Zwischenablage.

Die Berechtigungsanforderung für die Zwischenablage-API.
Dar a las páginas web acceso de lectura sin restricciones al portapapeles es todavía más problemático. Los usuarios copian rutinariamente información confidencial como contraseñas y datos personales al portapapeles, que después puede ser leído por cualquier página sin el conocimiento del usuario.
Como ocurre con muchas API nuevas, la API del Portapapeles solo es compatible con las páginas publicadas mediante HTTPSHTTPS (protocolo de Transferencia de Hiper-Texto) es un protocolo que permite determinar una conexión segura entre el servidor y el cliente, que no puede ser interceptada por personas no autorizadas. En resumidas cuentas, es la versión segura de el http (Hyper Text Transfer Protocol) Cómo funciona Una conexión HTTP estándar en Internet puede ser fácilmente secuestrada por partes no autorizadas. El propósito de una conexión HTTPS es evitar esto: encriptar Plus. Para ayudar a prevenir el abuso, el acceso al portapapeles solo está permitido cuando una página es la pestaña activa. Las páginas en pestañas activas pueden escribir en el portapapeles sin solicitar permiso, pero leer desde el portapapeles siempre necesita permiso.
Se han incorporado permisos para copiar y pegar al
Berechtigungs-API. das Zwischenablage schreiben el permiso se otorga de forma automática a las páginas cuando son la pestaña activa. los Zwischenablage lesen Es muss eine Berechtigung angefordert werden. Dies können Sie tun, indem Sie versuchen, Daten aus der Zwischenablage zu lesen. Der folgende Code zeigt die neuesten:
const queryOpts = { Süßkartoffel: 'clipboard-read', allowWithoutGesture: falsch };
const permissionStatus = erwarten Navigator.permissions.AbfrageConcepto de Query¿Qué es una Query?Una query, en inglés, es una definición que significa pregunta. Trasladando este concepto al marketing digital y a internet, se traduce como el concepto que un usuario escribe en un buscador, véase Google, cuando desea realizar una búsqueda usando keywords o palabras clave. Es la serie de términos reales que se utilizan al momento de ir en busca de información en estos portales.Cuando un consumidor Plus(queryOpts);
console.Log(permissionStatus.Zustand);
permissionStatus.onchange = () => {
console.Log(permissionStatus.Zustand);
};
Además puede controlar si se necesita un gesto de usuario para invocar cortar o pegar utilizando el allowWithoutGesture opción. El valor predeterminado de este valor varía según el navegador, por lo que siempre debe incorporarlo.
Aquí es donde la naturaleza asincrónica de la API del Portapapeles es verdaderamente útil: intentar leer o escribir datos del portapapeles de forma automática solicita al usuario permiso si todavía no se ha otorgado. Puesto que la API se basa en promesas, esto es totalmente transparente, y un usuario que niega el permiso del portapapeles hace que la promesa se rechace para que la página pueda responder adecuadamente.
Porque Chrome solo posibilita el acceso al portapapeles cuando una página es la pestaña activa, encontrará que algunos de los ejemplos aquí no se ejecutan si se pegan de forma directa en DevTools, puesto que DevTools en sí es la pestaña activa. Hay un truco: diferir el acceso al portapapeles utilizando setTimeout (), después haga clic rápidamente dentro de la página para enfocarla antes de llamar a las funciones:
setTimeout(asynchron () => {
const Text = erwarten Navigator.Zwischenablage.readText();
console.Log(Text);
}, 2000);
Funktionserkennung
Para utilizar la API Async Clipboard mientras es compatible con todos los navegadores, pruebe
navigator.clipboard y recurrir a métodos anteriores. A modo de ejemplo, así es como puede poner en práctica el pegado para incluir otros navegadores.
Dokument.addEventListener('paste', asynchron (und) => {
und.preventDefault();
Lassen Text;
wenn (Navigator.Zwischenablage) {
Text = erwarten Navigator.Zwischenablage.readText();
}
else {
Text = und.clipboardData.getData('text/plain');
}
console.Log('Got pasted text: ', Text);
});
Esa no es toda la historia. Antes de la API Async Clipboard, existía una combinación de diferentes implementaciones de copiar y pegar en los navegadores web. En la mayoría de los navegadores, la función de copiar y pegar del navegador se puede activar a través de
document.execCommand ('copy') y document.execCommand ('Einfügen'). Wenn der zu kopierende Text eine Zeichenfolge ist, die im DOM nicht vorhanden ist, muss er in das DOM eingefügt und ausgewählt werden:
Taste.addEventListener('click', (und) => {
const Eingang = Dokument.createElement('input');
Dokument.Körper.appendChild(Eingang);
Eingang.Wert = Text;
Eingang.focus();
Eingang.select();
const result = Dokument.execCommand('copy');
wenn (result === 'unsuccessful') {
console.Error('Failed to copy text.');
}
});
En Internet Explorer, además puede entrar al portapapeles mediante
window.clipboardData. Beim Zugriff innerhalb einer Benutzergeste, z. B. eines Klickereignisses, das Teil der verantwortungsvollen Anforderung von Berechtigungen ist, wird keine Berechtigungsnachricht angezeigt.
Population
Puede jugar con la API Async Clipboard en las demostraciones a continuación. Podrías obtener un
NotAllowedError si se ejecuta en un iframeConcepto de Iframe¿Qué es un Iframe?Un Iframe es un documento de una web que se inserta en otra página web. Consiste en un elemento que puede albergar cualquier tipo de contenido en su interior y que ayuda, entre otras cosas, a ampliar el mensaje que se ofrece con fuentes externas o con material complementario que pueda resultar de interés para el usuario que entra.Este elemento web se usa especialmente al Plus, eso es provocado por el recién implementado
Zwischenablage Funktionsrichtlinie. Para este caso, ejecute la demostración. de forma directa en Glitch.
Das erste Beispiel zeigt, wie Text in die Zwischenablage ein- und ausgeblendet wird.
Verwenden Sie diese Demo, um die API mit Bildern zu testen. Denken Sie daran, dass nur PNGs unterstützt werden und nur in
[ein paar Browser] (https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API.
Nächste Schritte
Chrome arbeitet aktiv daran, die API für die asynchrone Zwischenablage um vereinfachte Ereignisse zu erweitern, die an der ausgerichtet sind
Drag & Drop-API. Debido a los riesgos potenciales, Chrome está pisando con cuidado. Para mantenerse actualizado sobre el progreso de Chrome, mire este post y nuestro BlogEl término blog se usa para describir un diario virtual en Internet. El autor de un blogger puede publicar posts sobre cualquier tema. Los posts suelen estar presente de forma cronológica. El estilo de redacción de un blog suele ser informal y se escribe en primera persona. No obstante, además son posibles otros estilos, por ejemplo en el caso de los periódicos online, en los que la atención se centra Plus para conseguir actualizaciones.
Por ahora, la compatibilidad con la API del portapapeles se encuentra disponible en
verschiedene Browser.
Viel Spaß beim Kopieren und Einfügen!
Vielen Dank
Die API für die asynchrone Zwischenablage wurde von implementiert Darwin Huang y Gary Kačmarčík. Darwin además proporcionó la demostración. Gracias a Kyarik y nuevamente a Gary Kačmarčík por revisar partes de este post.
Heldenbild von Markus Winkler im
Unsplash.




