frank 发表于 2024-4-18 23:34:10

[疑似 bug] 82版JS小标签是不是不支持 navigator.clipboard.writeText()

本帖最后由 S8F8ry 于 2024-4-19 15:00 编辑

   因浏览器自带都是网页标题网址一块复制, 写了一个小标签分别复制标题 or Url , 老版 使用没问题, 但 82版 无效, 特意在 navigator.clipboard.writeText

前面加了 alert 验证, 可以弹出 标题 or Url , 但死活复制不进去剪贴板, 看大佬有啥办法...


S8F8ry 发表于 2024-4-19 14:59:16

测试了下,我感觉像是百分浏览器中的 bug。我在百分中查询 clipboard-write 权限始终都是 denied (无论网站设置中的"剪贴板"如何配置):
navigator.permissions.query({name: 'clipboard-write',}).then(result => console.log(result));
因此在百分浏览器上 navigator.clipboard.write/writeText 方法都无法正常工作了。

但在最新版 Chrome 或者 Chromium 118.0.5961.0 上查询时都是正常的 granted,并且 navigator.clipboard.write/writeText 方法工作正常。

static/image/hrline/5.gif

所以楼主的需求我觉得目前在百分浏览器上只能通过写成油猴脚本来实现了。

frank 发表于 2024-4-19 22:12:42

S8F8ry 发表于 2024-4-19 14:59
测试了下,我感觉像是百分浏览器中的 bug。我在百分中查询 clipboard-write 权限始终都是 denied (无论网站 ...

:handshake 收到, 我再测试其他方法, 多谢超版耐心解答...:lol

Admin 发表于 2024-4-19 23:16:15

这边测试都是granted,你们那会不会是被杀软给拦截了?

frank 发表于 2024-4-19 23:19:34

Admin 发表于 2024-4-19 23:16
这边测试都是granted,你们那会不会是被杀软给拦截了?

;P 我裸奔, 无任何杀软类软件, 是不是设置里有什么区别...:lol

Admin 发表于 2024-4-19 23:27:42

frank 发表于 2024-4-19 15:19
我裸奔, 无任何杀软类软件, 是不是设置里有什么区别...

你用浏览器的安全模式试试

S8F8ry 发表于 2024-4-20 00:14:50

Admin 发表于 2024-4-19 23:16
这边测试都是granted,你们那会不会是被杀软给拦截了?

又试了试,发现只有百分在 https://hao.centbrowser.cn 这个网站里始终是 denied 的(今天图方便就一直都是在这个网站里测试 {:3_44:},可能是由于响应内容里有 window.location.href 重定向网址但在百分加载时地址栏地址不会变动),而在其他 https 网站上都正常。

那类似这样的小脚本应该是可以正常工作的:
javascript:navigator.permissions.query({name: 'clipboard-write',}).then(result => {if (result.state == 'granted' || result.state == 'prompt') {navigator.clipboard.writeText(document.title);} else {alert('请允许写入剪贴板!');}});

frank 发表于 2024-4-20 03:56:35

本帖最后由 frank 于 2024-4-20 04:06 编辑

Admin 发表于 2024-4-19 23:27
你用浏览器的安全模式试试 标题: 电影电视剧—高清正版视频在线观看—1905电影网

网址: hxxps://vip.1905.com/
win7 环境百分浏览器82版安全模式 已经测试,navigator.clipboard.writeText 无效

   同样环境, 百分浏览器 4.3.9.248版 正常模式 同样代码, navigator.clipboard.writeText 正常有效...

frank 发表于 2024-4-20 04:11:44

S8F8ry 发表于 2024-4-20 00:14
又试了试,发现只有百分在 https://hao.centbrowser.cn 这个网站里始终是 denied 的(今天图方便就一直都 ...

同样环境 同样代码 同样网站 只是浏览器版本不同, 是不是高版本核心加入了什么防御机制 导致复制不进剪贴板...

coult3 发表于 2024-4-20 10:41:46

本帖最后由 coult3 于 2024-4-20 12:09 编辑

我这边win10+百分82正式版+新配置

控制台运行 navigator.permissions.query({name: 'clipboard-write',}).then(result => console.log(result));
回车后结果为 state: 'granted' 正常。
PermissionStatus{name: 'clipboard_write', state: 'granted', onchange: null}

但是再在控制台运行 navigator.clipboard.writeText(document.title);
显示报错:
DOMException: Document is not focused.

经过一翻辛苦地搜索,终于找到了解决方案:https://stackoverflow.com/a/75539344
就是要在当前页面f12打开 开发者工具,按 Command+Shift+P 打开命令菜单,运行>后输入 “渲染”,点击 “显示 渲染 工具--抽屉式导航栏”,勾选“模拟所聚焦的网页”。
(另:另一个打卡渲染面板的方法是:开发者工具,右上角三个点,更多工具,渲染)
参考:
https://developer.chrome.com/doc ... h-cn#open-rendering
https://developer.chrome.com/doc ... late-a-focused-page

勾选“模拟所聚焦的网页”后,控制台运行 navigator.clipboard.writeText(document.title);
回车后就能成功复制标题了。


然后分享一个我想出来的骚操作:利用confirm弹窗点击确定和取消分别执行复制标题和url :P
点击小书签后弹窗,点击确定复制网址,点击取消复制url,前提是 要事先开发者模式,勾选“模拟所聚焦的网页”。
javascript:var result=window.confirm("点击确定复制:网址,点击取消复制:标题");if(result){navigator.clipboard.writeText(document.location.href)}else{navigator.clipboard.writeText(document.title)}
===
另外如果navigator.clipboard.writeText实在用不了了,或者每个网页都勾选模拟所聚焦的网页,太麻烦的话,也可以用 document.execCommand('copy');嘛:lol

javascript:
var result=window.confirm("点击确定复制:网址,点击取消复制:标题");
if(result){
var tempInput=document.createElement('input');
tempInput.value=document.location.href;
document.body.appendChild(tempInput);
tempInput.select();
document.execCommand('copy');
document.body.removeChild(tempInput);
}
else{
var tempInput=document.createElement('input');
tempInput.value=document.title;
document.body.appendChild(tempInput);
tempInput.select();
document.execCommand('copy');
document.body.removeChild(tempInput);
}
这个就不用 勾选“模拟所聚焦的网页” ,随时都可以复制。:victory:






页: [1] 2
查看完整版本: [疑似 bug] 82版JS小标签是不是不支持 navigator.clipboard.writeText()