logo
/
clipboard apiはtext-plainとtext-htmlしかsetできない
clipboard apiはtext/plainとtext/htmlしかsetできない
w3cにはjsonやxmlなどのタイプが存在する
     const data = [
       new ClipboardItem({
         'text/plain': new Blob([assembled.text], {
           type: 'text/plain',
         }),
         'text/html': new Blob([`<ul>${assembled.html}</ul>`], {
           type: 'text/html',
         }),
         'text/opml': new Blob([
           `<?xml version="1.0" encoding="utf-8"?>
         <opml version="2.0">
           <head>
             <title></title>
             <flavor>dynalist</flavor>
             <source>https://dynalist.io</source>
           </head>
           <body></opml>`,
         ]),
       }),
     ]
     navigator.clipboard.write(data)
Uncaught (in promise) DOMException: Type text/opml not supported on write.が出る どうするのか?
古のdocument.execCommand('copy')を使う
code:oncopy.js
 const someFunc = () => {
 	document.execCommand('copy')
 }

 const onCopy = (e: React.ClipboardEvent) => {
     e.preventDefault()
     const clipboardData = e.clipboardData
     if (!clipboardData) {
       alert('this browser does not work ClipboardData')
       return
     }

     if (clipboardDataRef.current) {
       console.log(clipboardDataRef.current)
       clipboardData.setData('text/plain', clipboardDataRef.current.text)
       clipboardData.setData('text/html', clipboardDataRef.current.html)
       clipboardData.setData('text/opml', clipboardDataRef.current.opml)
       clipboardDataRef.current = null
     }
   }