gpt4 book ai didi

javascript - navigator.clipboard.writeText() 不适用于特定的 IOS 设备

转载 作者:行者123 更新时间:2023-12-05 03:45:55 24 4
gpt4 key购买 nike

我目前正在使用 navigator.clipboard.writeText() 将元素中的值复制到剪贴板,但是,它似乎适用于除 iPhone X 和iPhone 6 Plus 在 Safari 中。

浏览器是最新的,根据 MDN,它们应该可以与这些版本的 safari 一起使用。该代码似乎适用于桌面、Android 和其他 IOS 设备(例如 iPhone 12)。

在 iPhone X 和 6 Plus 上,它会在控制台中的这两种设备上抛出一个 Promise 错误,并且也不会复制到剪贴板:

未处理的 Promise 拒绝:TypeError:undefined 不是对象(评估“navigator.clipboard.writeText”)

Full error

有没有人经历过类似的事情并且已经看到/提出了解决方案?谢谢!

代码片段:

   const coupon = couponSelector.value;
if (notMissing(coupon) && coupon !== '') {
navigator.clipboard
.writeText(coupon)
.then(() =>
LOGGER.debug({}, `${LOGGER_PREFIX}: Promise Successful.Copied coupon: ${coupon}`),
)
.catch((e) => LOGGER.error({ e }, `${LOGGER_PREFIX}: Promise Failed:`));
}

最佳答案

参见 my answer on the post linked in Damian Demasi's answer , 为方便起见转载于此……

security limitations on this API在(移动)Safari 中,其中之一是它必须在受 https 保护的站点上执行,因此不会在 localhost 上运行,例如:

  • The API is limited to secure contexts, which means that navigator.clipboard is not present for http:// websites.
  • The request to write to the clipboard must be triggered during a user gesture. A call to clipboard.write or clipboard.writeText outside the scope of a user gesture (such as "click" or "touch" event handlers) will result in the immediate rejection of the promise returned by the API call.[…]

关于javascript - navigator.clipboard.writeText() 不适用于特定的 IOS 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65582701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com