【问题标题】:execCommand('copy') silently fails in IE when the user answers the prompt with 'Don't allow'当用户用“不允许”回答提示时,execCommand('copy') 在 IE 中静默失败
【发布时间】:2015-12-28 12:16:43
【问题描述】:

如果在执行 execCommand('copy') 命令时,IE 中的安全级别至少设置为“Medium”(在 Edge 和 11 中测试),浏览器会提示您,询问您是否允许页面操纵你的剪贴板。

我的问题是,如果你点击“不允许”,execCommand('copy') 仍然返回 true。此外,不会引发任何错误。

我怎样才能捕捉和处理这个用户响应?

【问题讨论】:

  • 这是一个非常奇怪的错误 - 问题是,如果您刷新页面,当您再次禁止时它确实返回 false。

标签: internet-explorer copy execcommand


【解决方案1】:

这是一个较老的问题,但我会插话,因为我自己也遇到过这个问题。

我最终做的是利用 IE 确实支持 document.execCommand('paste') 方法这一事实。也就是说,您可以将复制的材料粘贴到隐藏的输入中,然后对照应该复制的内容进行检查。

如果用户允许操作剪贴板,则粘贴的内容和复制的内容将是相同的。否则,他们不会。像这样的:

var copySuccess,
    canPaste;

inputElementToCopy.select();
copySuccess = document.execCommand('copy');

inputElementToPaste.select();
canPaste = document.execCommand('paste');

if (canPaste) {
    copySuccess = inputElementToPaste.value === inputElementToCopy.value;

    // Since IE supports paste,
    // if user allowed clipboard: copySuccess === true
    // else: copySuccess === false
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多