Javascript 如何在使用前检测“复制到剪贴板”功能

Javascript 如何在使用前检测“复制到剪贴板”功能,javascript,copy-paste,Javascript,Copy Paste,我正在尝试用纯JS创建一个复制函数,所以没有flash。我遇到的问题是,当浏览器不支持复制到剪贴板时,我不想显示“复制”按钮 我正在使用document.execCommand('copy')方法复制到剪贴板,但对它的支持不是最好的。例如,safari具有execCommand功能,但不支持copy参数。这意味着我不能简单地检查函数是否存在 由于这种不可靠的支持,我想我将不得不使用浏览器检测的方式,就像github一样,这是我在查看问题时遇到的。是我找到的实现 是否有正确的方法检测用户代理?我不

我正在尝试用纯JS创建一个复制函数,所以没有flash。我遇到的问题是,当浏览器不支持复制到剪贴板时,我不想显示“复制”按钮

我正在使用
document.execCommand('copy')
方法复制到剪贴板,但对它的支持不是最好的。例如,safari具有execCommand功能,但不支持copy参数。这意味着我不能简单地检查函数是否存在

由于这种不可靠的支持,我想我将不得不使用浏览器检测的方式,就像github一样,这是我在查看问题时遇到的。是我找到的实现


是否有正确的方法检测用户代理?我不想使用NavigatorID.userAgent,因为它已被弃用。

我注意到,在版本10之前的Safari(在9.0和9.1上测试)中,以下构造

document.execCommand('copy');
将返回
false
。 这一事实可用于检查Safari中的兼容性

if (false == document.execCommand('copy')) {
    // Logic for handling the copy functionality in some other way
}

您是否尝试了
typeof document.execCommand!='未定义“
”?正如我在问题中所说,safari有document.execCommand函数,但不支持参数“copy”。这就是为什么我想沿着浏览器检测的路线走下去。在尝试将函数与该参数一起使用时,它也不会抛出错误。在我看来,除了用户代理嗅探之外,没有其他可靠的方法。但是(我意识到这是5年后的事了!)对这一点的支持现在无处不在;我发现2016年年中之后发布的任何版本都不缺少支持,因此我认为检测支持不再是必要的。当我刚刚在控制台中尝试Firefox(v48)时,Firefox(v48)返回false和警告。根据MDN,firefox从v41开始就支持该命令-是的,遇到了同样的问题。有趣的事实是,FF v47和FF v49返回
true
。看起来像是v48中的一个bug。