百分浏览器论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 339|回复: 17

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

[复制链接]

35

主题

1273

回帖

4731

积分

论坛元老

Rank: 8Rank: 8

积分
4731
发表于 2024-4-18 23:34:10 | 显示全部楼层 |阅读模式
本帖最后由 S8F8ry 于 2024-4-19 15:00 编辑

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

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


回复

使用道具 举报

7

主题

6673

回帖

1万

积分

超级版主

(^^ゞ

Rank: 8Rank: 8

积分
18978
发表于 2024-4-19 14:59:16 | 显示全部楼层
测试了下,我感觉像是百分浏览器中的 bug。我在百分中查询 clipboard-write 权限始终都是 denied (无论网站设置中的"剪贴板"如何配置):
  1. 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 方法工作正常。



所以楼主的需求我觉得目前在百分浏览器上只能通过写成油猴脚本来实现了。
¯\(°_o)/¯
回复

使用道具 举报

35

主题

1273

回帖

4731

积分

论坛元老

Rank: 8Rank: 8

积分
4731
 楼主| 发表于 2024-4-19 22:12:42 | 显示全部楼层
S8F8ry 发表于 2024-4-19 14:59
测试了下,我感觉像是百分浏览器中的 bug。我在百分中查询 clipboard-write 权限始终都是 denied (无论网站 ...

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

使用道具 举报

41

主题

5917

回帖

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
20387
发表于 2024-4-19 23:16:15 | 显示全部楼层
这边测试都是granted,你们那会不会是被杀软给拦截了?
QQ(2530160833)
回复

使用道具 举报

35

主题

1273

回帖

4731

积分

论坛元老

Rank: 8Rank: 8

积分
4731
 楼主| 发表于 2024-4-19 23:19:34 | 显示全部楼层
Admin 发表于 2024-4-19 23:16
这边测试都是granted,你们那会不会是被杀软给拦截了?

裸奔, 无任何杀软类软件, 是不是设置里有什么区别...
回复

使用道具 举报

41

主题

5917

回帖

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
20387
发表于 2024-4-19 23:27:42 | 显示全部楼层
frank 发表于 2024-4-19 15:19
我裸奔, 无任何杀软类软件, 是不是设置里有什么区别...

你用浏览器的安全模式试试
QQ(2530160833)
回复

使用道具 举报

7

主题

6673

回帖

1万

积分

超级版主

(^^ゞ

Rank: 8Rank: 8

积分
18978
发表于 2024-4-20 00:14:50 | 显示全部楼层
Admin 发表于 2024-4-19 23:16
这边测试都是granted,你们那会不会是被杀软给拦截了?

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

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

使用道具 举报

35

主题

1273

回帖

4731

积分

论坛元老

Rank: 8Rank: 8

积分
4731
 楼主| 发表于 2024-4-20 03:56:35 | 显示全部楼层
本帖最后由 frank 于 2024-4-20 04:06 编辑
Admin 发表于 2024-4-19 23:27
你用浏览器的安全模式试试
  1. 标题: 电影电视剧—高清正版视频在线观看—1905电影网

  2. 网址: hxxps://vip.1905.com/
复制代码

  win7 环境  百分浏览器82版  安全模式 已经测试,  navigator.clipboard.writeText 无效

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

使用道具 举报

35

主题

1273

回帖

4731

积分

论坛元老

Rank: 8Rank: 8

积分
4731
 楼主| 发表于 2024-4-20 04:11:44 | 显示全部楼层
S8F8ry 发表于 2024-4-20 00:14
又试了试,发现只有百分在 https://hao.centbrowser.cn 这个网站里始终是 denied 的(今天图方便就一直都 ...

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

使用道具 举报

35

主题

282

回帖

1982

积分

金牌会员

Rank: 6Rank: 6

积分
1982
发表于 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
点击小书签后弹窗,点击确定复制网址,点击取消复制url,前提是 要事先开发者模式,勾选“模拟所聚焦的网页”。
  1. 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');  嘛

  1. javascript:
  2. var result=window.confirm("点击确定复制:网址,点击取消复制:标题");
  3. if(result){
  4.   var tempInput=document.createElement('input');
  5.   tempInput.value=document.location.href;
  6.   document.body.appendChild(tempInput);
  7.   tempInput.select();
  8.   document.execCommand('copy');
  9.   document.body.removeChild(tempInput);
  10. }
  11. else{
  12.   var tempInput=document.createElement('input');
  13.   tempInput.value=document.title;
  14.   document.body.appendChild(tempInput);
  15.   tempInput.select();
  16.   document.execCommand('copy');
  17.   document.body.removeChild(tempInput);
  18. }
复制代码

这个就不用 勾选“模拟所聚焦的网页” ,随时都可以复制。






回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|百分浏览器论坛

GMT+8, 2024-5-14 09:50 , Processed in 0.047504 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表