剪贴板 API 在非 SSL 站点上读取/写入/粘贴

问题描述 投票:0回答:1

我有一个扩展 bbCode for Web Extensions,它可以自动为 BBS、博客等文本添加标签。

我想添加符号,这对于富文本编辑器框很有用,但我当前的技术仅适用于纯文本框和输入字段。 (很丑,但与当前讨论无关)

我一直在使用 Clipboard API 运行一些测试代码,这比我所做的要优雅得多,并且它适用于前面提到的富文本编辑器框,包括 iframe 中的框,但ONLY 在 SSH 上(https://) 站点,而不是不安全的 (http://) 站点。 (http:// 站点很重要,因为我知道许多公告板由于成本原因不使用 ssl,包括我管理的公告板)

显然,我可以确定连接并基于此使用不同的方法,但我试图避免这种解决方案。

下面是我正在使用的代码,基本上,它记录当前剪贴板(此处不包括剪贴板读取功能),将当前选择复制到剪贴板,记录该内容,将字符串写入剪贴板(“blblblblblbl”),然后然后粘贴它。

从控制台日志来看,它是

navigator.clipboard.writeText('blblblblblblblblblblblblblbl');
,它没有在不安全的页面上执行。

编辑时,只是 Clipboard.writeText 未执行。

这是代码:

console.log("Current contents of clipboard",(await readFromClipboard()));
document.execCommand('copy'); //copy to clipboard
let copsel = await readFromClipboard();
console.log("selection copied to clipboard", await copsel);
await navigator.clipboard.writeText('blblblblblblblblblblblblblbl');
let afterBl = await readFromClipboard();
console.log("afterBl",afterBl);
document.execCommand('paste');

我有一个页面,可以作为 http 或 https 加载作为测试,https://www.panix.com/~msaroff/cntedt.html.

对于 https 页面,控制台日志为:

Current contents of clipboard em ips
selection copied to clipboard Lorem ipsum 
afterBl blblblblblblblblblblblblblbl 

搅拌会替换所选页面。

对于http页面,控制台日志为:

Current contents of clipboard http://www.panix.com/~msaroff/cntedt.html
selection copied to clipboard Lorem ipsum
TypeError: navigator.clipboard is undefined

页面不会发生任何变化,剪贴板内容也不会变成“blblblblbl”,这意味着

navigator.clipboard.writeText
不会触发。

那么有没有一个 JAVASCRIPT(不是 Jquery 等)解决方案来完成这项工作?

javascript ssh ecmascript-6 clipboard firefox-addon-webextensions
1个回答
-1
投票

在互联网上,网站现在应该是 SSL 的。但是,在某些情况下,您可能有一个本地 Intranet/Web 应用程序,几乎不需要 SSL。

对于仍然有效的复制解决方法(2023 年 9 月,在 Chrome 116 中),我建议查看这个答案:

https://stackoverflow.com/a/74528564/3622569

© www.soinside.com 2019 - 2024. All rights reserved.