我有一个电子应用程序,其中包含一些我希望防止被复制的数据。我知道不可能有100%的安全性,但用户不会是技术人员,所以一个简单的解决方案就可以做到。
我已经做过的事情:
- 禁用通过CSS选择。 user-select: none;
问题在于:即使选择不可见,仍然可以复制所有内容。
通过以下方式清除 CTRL / CMD + C 上的剪贴板:
globalShortcut.register('CommandOrControl+C', () => {
clipboard.clear();
});
问题在这里:处理程序似乎确实是全局的,我很有趣,并尝试在VisualCode中复制/粘贴;) 只在一个应用程序中使用它会很酷。
Plus:仍然允许复制短字符串很酷。如果有人知道如何访问例如globalShortcut *中的当前选择,我可以将此截断设置为300个字符到剪贴板。
* window
未定义
答案 0 :(得分:1)
我抛弃了整个全局/本地快捷方式,并使用了复制事件。似乎现在工作正常。
['copy', 'cut'].forEach((eventName) => {
document.addEventListener(eventName, (e) => {
const selection = window.getSelection().toString();
const truncatedSelection = selection.slice(0, 300);
if (selection.length > 299) {
alert('Selection to huge. Please select less.');
}
e.clipboardData.setData('text/plain', truncatedSelection);
e.clipboardData.setData('text/html', truncatedSelection);
e.preventDefault();
});
});