Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-im
提交
dab3c5ec
U
uni-im
项目概览
DCloud
/
uni-im
通知
3
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-im
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
dab3c5ec
编写于
4月 22, 2024
作者:
DCloud_JSON
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复 富文本内容右键复制内容后粘贴到钉钉不可用的问题
上级
cb55e287
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
32 addition
and
45 deletion
+32
-45
components/uni-im-msg/popup-control.vue
components/uni-im-msg/popup-control.vue
+32
-45
未找到文件。
components/uni-im-msg/popup-control.vue
浏览文件 @
dab3c5ec
...
...
@@ -212,52 +212,10 @@
this
.
opacity
=
1
})
},
copyContent
(){
async
copyContent
(){
// console.log('setClipboardData');
// console.log('this.controlData',this.controlData);
let
data
=
this
.
controlData
.
msg
.
body
switch
(
this
.
controlData
.
msg
.
type
){
case
'
userinfo-card
'
:
data
=
location
.
origin
+
'
/#/?user_id=
'
+
this
.
controlData
.
msg
.
body
.
user_id
break
;
case
'
rich-text
'
:
data
=
JSON
.
stringify
({
"
uni-im-rich-text-data
"
:
data
})
break
;
default
:
break
;
}
// #ifdef H5
if
(
this
.
controlData
.
msg
.
type
===
'
rich-text
'
)
{
// 如果富文本消息是纯图片,则直接把图片内容放入剪贴板
let
[
n1
,
n2
,
n3
]
=
this
.
controlData
.
msg
.
body
if
(
n1
?.
type
===
'
text
'
&&
n1
?.
text
===
''
&&
n2
?.
name
===
'
img
'
&&
n2
?.
attrs
?.
src
?.
startsWith
(
'
data:image/
'
)
&&
n3
?.
type
===
'
text
'
&&
n3
?.
text
===
''
)
{
// data:image/png;base64,iVBORw0K...
let
dataurl
=
n2
.
attrs
.
src
let
m
=
/^data:
(
image
\/
.*
)
;base64,
(
.*
)
$/
.
exec
(
dataurl
)
if
(
m
)
{
let
[
_
,
mime
,
base64
]
=
m
let
byteCharacters
=
atob
(
base64
)
let
byteNumbers
=
new
Array
(
byteCharacters
.
length
)
for
(
let
i
=
0
;
i
<
byteCharacters
.
length
;
i
++
)
{
byteNumbers
[
i
]
=
byteCharacters
.
charCodeAt
(
i
)
}
let
byteArray
=
new
Uint8Array
(
byteNumbers
)
let
blob
=
new
Blob
([
byteArray
],
{
type
:
mime
})
let
file
=
new
File
([
blob
],
mime
.
replace
(
'
/
'
,
'
.
'
),
{
type
:
mime
})
let
clipboardItem
=
new
ClipboardItem
({
[
mime
]:
file
})
navigator
.
clipboard
.
write
([
clipboardItem
])
uni
.
hideToast
()
return
}
}
}
if
(
this
.
controlData
.
msg
.
type
===
'
image
'
)
{
let
{
name
,
url
}
=
this
.
controlData
.
msg
.
body
fetch
(
url
).
then
(
response
=>
response
.
blob
()).
then
(
blob
=>
{
...
...
@@ -266,11 +224,40 @@
let
clipboardItem
=
new
ClipboardItem
({
[
mime
]:
file
})
navigator
.
clipboard
.
write
([
clipboardItem
])
})
uni
.
hideToast
()
return
}
// #endif
let
data
=
this
.
controlData
.
msg
.
body
switch
(
this
.
controlData
.
msg
.
type
){
case
'
userinfo-card
'
:
data
=
location
.
origin
+
'
/#/?user_id=
'
+
this
.
controlData
.
msg
.
body
.
user_id
break
;
case
'
rich-text
'
:
/*
let html = data.map(i=>i.name == 'img' ? `<img src="${i.attrs.src}">` : i.text).join(' ')
// 把data写到剪切板
// 将HTML字符串转换为ArrayBuffer,确保UTF-8编码
const encoder = new TextEncoder();
const htmlArrayBuffer = encoder.encode(html);
// 创建一个包含HTML内容的ClipboardItem
const clipboardItem = new ClipboardItem({
'text/html': new Blob([htmlArrayBuffer], { type: 'text/html' }),
});
// 尝试将ClipboardItem写入剪切板
try {
await navigator.clipboard.write([clipboardItem]);
console.log('HTML内容已写入剪切板');
} catch (err) {
console.error('写入剪切板失败: ', err);
}
return
*/
data
=
data
.
map
(
i
=>
i
.
name
==
'
img
'
?
'
[图片]
'
:
i
.
text
).
join
(
'
'
)
break
;
default
:
break
;
}
uni
.
setClipboardData
({
data
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录