nav*_*nav 8 javascript iframe reactjs
在我的 React 应用程序中,我在遍历数组后显示卡片(因此理论上可以有n卡片)。
我希望在用户单击该卡片时复制卡片中显示的文本。然而,问题是反应应用程序是在 iframe 内呈现的。
当应用程序位于单个选项卡中时,复制功能有效。但是,当在 iframe 中尝试时,我遇到了这个错误:
Uncaught (in promise) DOMException: Disabled in this document by Feature Policy.
Run Code Online (Sandbox Code Playgroud)
这与Google 的这项政策变更有关。有什么方法可以使此功能正常工作?
附加信息:在 iframe 中呈现的应用与父应用不共享同一个域
背景阅读链接:
col*_*ock 11
要添加到 joe 的答案中,如果您需要允许剪贴板从与父页面不同的来源访问 iframe 网站(特别是如果子页面重定向到另一个来源),则需要在 '允许'属性值。例如,要允许剪贴板读取访问https://trustedsite.com/somefolder/index.html,请使用:
<iframe src="index.html" allow="clipboard-read self https://trustedsite.com/somefolder/index.html"></iframe>
Run Code Online (Sandbox Code Playgroud)
如果您嵌入跨域 URL 并且未在“允许”中提供受信任的域,您将在 Chrome 中看到以下错误:
由于应用于当前文档的权限策略,剪贴板 API 已被阻止。
正如这里提到的:
要在 iframe 中使用 API,您需要使用Permissions Policy启用它,它定义了一种机制,允许有选择地启用和禁用各种浏览器功能和 API。具体而言,您需要通过任一种或两种
clipboard-read或clipboard-write根据您的应用程序的需求。
<iframe src="index.html" allow="clipboard-read; clipboard-write"></iframe>
Run Code Online (Sandbox Code Playgroud)
如果您只想将文本复制到剪贴板(即您不需要能够以编程方式读取它),那么您只需要clipboard-write权限:
<iframe src="index.html" allow="clipboard-write"></iframe>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2482 次 |
| 最近记录: |