[update] pdf预览页面、标准解读查看页面 增加复制字符长度限制1000,超出后复制自动截取前1000个字符
This commit is contained in:
@@ -623,11 +623,50 @@ See https://github.com/adobe-type-tools/cmap-resources
|
||||
const handleSelectionChange = (event) => {
|
||||
const windowSelection = window.getSelection()
|
||||
const selectionText = windowSelection ? window.getSelection().toString() : document.selection.createRange().text
|
||||
if (selectionText.length > 500) {
|
||||
alert('超出可复制长度')
|
||||
windowSelection ? window.getSelection().removeAllRanges() : document.selection.empty()
|
||||
// if (selectionText.length > 50) {
|
||||
// alert('超出可复制长度')
|
||||
// windowSelection ? window.getSelection().removeAllRanges() : document.selection.empty()
|
||||
// }
|
||||
}
|
||||
document.addEventListener('selectionchange', handleSelectionChange);
|
||||
|
||||
const handleCopy = (e) => {
|
||||
const COPY_MAX_LENGTH = 1000
|
||||
const windowSelection = window.getSelection()
|
||||
let selectionText = windowSelection ? window.getSelection().toString() : document.selection.createRange().text
|
||||
if (selectionText.length > COPY_MAX_LENGTH) {
|
||||
// 单次复制超过x个字,提示并截取前x字
|
||||
alert('超出可复制长度' + COPY_MAX_LENGTH)
|
||||
selectionText = selectionText.substring(0, COPY_MAX_LENGTH)
|
||||
// 清楚页面选中的效果
|
||||
const wSelections = window.getSelection()
|
||||
if (wSelections) {
|
||||
wSelections.removeAllRanges()
|
||||
} else {
|
||||
document.selection.empty()
|
||||
}
|
||||
const tempTextarea = document.createElement('textarea')
|
||||
tempTextarea.value = selectionText
|
||||
tempTextarea.style.height = '0px'
|
||||
tempTextarea.style.width = '0px'
|
||||
document.body.appendChild(tempTextarea)
|
||||
tempTextarea.select()// Safari兼容
|
||||
tempTextarea.setSelectionRange(0, 99999999)
|
||||
let timer = setTimeout(() => {
|
||||
document.execCommand('copy')
|
||||
document.body.removeChild(tempTextarea)
|
||||
// 清除 textarea 选中的效果
|
||||
if (window.getSelection()) {
|
||||
window.getSelection()?.removeAllRanges && window.getSelection()?.removeAllRanges()
|
||||
} else {
|
||||
document.selection.empty()
|
||||
}
|
||||
clearTimeout(timer)
|
||||
timer = null
|
||||
}, 100)
|
||||
}
|
||||
}
|
||||
document.addEventListener('selectionchange', handleSelectionChange)
|
||||
// 监听复制
|
||||
document.addEventListener('copy', handleCopy);
|
||||
</script>
|
||||
</html>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<a-spin :spinning="loading">
|
||||
<a-spin :spinning="loading" v-copy-limit>
|
||||
<!-- 搜索条件 -->
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
|
||||
@@ -43,6 +43,7 @@ import {
|
||||
import config from '@/defaultSettings'
|
||||
|
||||
import hasPermission from '@/utils/hasPermission'
|
||||
import copyLimit from '@/utils/copyLimit'
|
||||
|
||||
import JeroComponents from '@/components/jero/index'
|
||||
|
||||
@@ -59,6 +60,7 @@ Vue.use(Antd)
|
||||
Vue.use(VueAxios, router)
|
||||
|
||||
Vue.use(hasPermission)
|
||||
Vue.use(copyLimit)
|
||||
Vue.use(Viewer)
|
||||
Vue.use(JeroComponents)
|
||||
Vue.use(JDictComponenets)
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
|
||||
export function handleCopyLimit () {
|
||||
const COPY_MAX_LENGTH = 1000
|
||||
const windowSelection = window.getSelection()
|
||||
let selectionText = windowSelection ? window.getSelection().toString() : document.selection.createRange().text
|
||||
if (selectionText.length > COPY_MAX_LENGTH) {
|
||||
// 单次复制超过x个字,提示并截取前x字
|
||||
alert('超出可复制长度' + COPY_MAX_LENGTH)
|
||||
selectionText = selectionText.substring(0, COPY_MAX_LENGTH)
|
||||
// 清楚页面选中的效果
|
||||
const wSelections = window.getSelection()
|
||||
if (wSelections) {
|
||||
wSelections.removeAllRanges()
|
||||
} else {
|
||||
document.selection.empty()
|
||||
}
|
||||
const tempTextarea = document.createElement('textarea')
|
||||
tempTextarea.value = selectionText
|
||||
tempTextarea.style.height = '0px'
|
||||
tempTextarea.style.width = '0px'
|
||||
document.body.appendChild(tempTextarea)
|
||||
tempTextarea.select()// Safari兼容
|
||||
tempTextarea.setSelectionRange(0, 99999999)
|
||||
let timer = setTimeout(() => {
|
||||
document.execCommand('copy')
|
||||
document.body.removeChild(tempTextarea)
|
||||
// 清除 textarea 选中的效果
|
||||
if (window.getSelection()) {
|
||||
window.getSelection().removeAllRanges && window.getSelection().removeAllRanges()
|
||||
} else {
|
||||
document.selection.empty()
|
||||
}
|
||||
clearTimeout(timer)
|
||||
timer = null
|
||||
}, 100)
|
||||
}
|
||||
}
|
||||
const copyLimit = {
|
||||
install (Vue) {
|
||||
Vue.directive('copy-limit', {
|
||||
inserted: function (el) {
|
||||
el.addEventListener('copy', handleCopyLimit)
|
||||
},
|
||||
unbind: function (el) {
|
||||
el.removeEventListener('copy', handleCopyLimit)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export default copyLimit
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="detail-page">
|
||||
<div class="detail-page" v-copy-limit>
|
||||
<a-spin :spinning="loading">
|
||||
<!-- 展示已有新版本或者废止,废止状态并且被代替标准编号存在则显示已有新版本,不存在被代替标准显示废止 -->
|
||||
<div class="detail-page-title">{{ pageTitle }}{{ $t('details') }}<span class="title-red-span">{{ haveNewVersion }}</span></div>
|
||||
|
||||
Reference in New Issue
Block a user