[英]javascript copy content of a div into clipboard from a canvas doesn't work on Firefox
我需要像在画布中一样将弹出窗口的内容复制到剪贴板中(它是Openlayer 4的东西,您需要在地图上添加一个叠加层,然后可以使用div来将其解析为内容创建后的内容),而不是直接访问。
要显示弹出窗口,您需要单击街道限制。
这里的项目:
https://www.traffwebdev.uk/parking/test.html
此代码可在Chrome,Internet Explorer和Edge中工作,但不能在Firefox中工作。
这是我用来将内容复制到剪贴板的代码:
const copyEv = () => {
let max = ''
if ($('#numofdivs').length > 0) {
max = $('#numofdivs').val()
}
else {
max = $('#popup-content').children().length
}
for (let i = 0; i < max; i++) {
document.getElementById(`Copy_Btn_${i}`).addEventListener('click', () => {
// We will need a range object and a selection.
let contentHolder = document.getElementById(`info_${i}`)
let range = document.createRange()
let selection = window.getSelection()
// Clear selection from any previous data.
selection.removeAllRanges()
// Make the range select the entire content of the contentHolder paragraph.
range.selectNodeContents(contentHolder)
// Add that range to the selection.
selection.addRange(range)
// Copy the selection to clipboard.
document.execCommand('copy')
// Clear selection if you want to.
selection.removeAllRanges()
})
}
}
我发现了另一种方法,但均不可行,在Codepen中有效,如果我修改文本以复制弹出窗口的内容也info_0
(您可以检查弹出窗口并在info_0
中复制整个info_0),但是在现实生活行不通。
https://codepen.io/chriscoyier/pen/OXAwvq
在地图上显示弹出窗口后,会延迟300ms来调用copyEv
函数,以确保显示弹出窗口
一旦投入生产,代码将通过webpack进行转换。
尝试以下操作:通过选择/复制文本之前添加contenteditable
属性,使包含文本的元素可编辑。 您可以在执行复制命令后立即删除该属性。
Firefox对于从DOM中不可编辑的元素中选择内容很挑剔。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.