当访问站点存在同名copy函数时,如何在控制台使用原生copy()方法
控制台内置copy被页面函数覆盖后的解决方法
首先给出结论:完全可以正常使用该复制功能,不会受页面自定义的copy函数影响。
页面自定义的copy函数会覆盖控制台全局的内置copy,是因为控制台执行代码时会优先读取window全局上下文的变量,页面定义的window.copy优先级高于控制台内置的全局copy,所以直接调用copy()会触发页面的函数,只需要用以下几种方案绕过即可:
- 方案1:使用控制台原生标识命令
所有现代版本的Chrome、Firefox控制台都支持:前缀调用原生控制台命令,完全不会被页面变量覆盖,直接执行以下代码即可::copy "你需要复制的文本内容" - 方案2:调用console对象下的copy方法
现代浏览器已经把copy工具函数挂载到了console对象下,不受window全局变量覆盖影响,直接执行即可:console.copy("你需要复制的文本内容") - 方案3:调用标准剪贴板API
如果你的浏览器版本过旧不支持上述两种方案,可以直接调用浏览器标准Clipboard API实现无交互复制:navigator.clipboard.writeText("你需要复制的文本内容")
该API是W3C标准实现,仅要求当前页面拥有剪贴板写入权限,你在控制台主动执行时默认有权限,完全不受页面自定义代码的干扰。
补充:如果需要复制的是对象而非纯文本,可以先用
JSON.stringify()把对象序列化之后再传入上述方法即可。
内容的提问来源于stack exchange,提问作者CennoxX
相关产品推荐
相关产品推荐

