整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

「亲测」JavaScript 复制显示内容来源

「亲测」JavaScript 复制显示内容来源
document.addEventListener("copy",function(e){
//取消默认事件,才能修改复制的值
e.preventDefault();
//复制的内容
var copyTxt=`${window.getSelection(0).toString()}
\n作者:科技小锅盖
\n链接:${window.location.href}
\n著作权归*科技小锅盖*所有,任何形式的转载都请联系QQ:1540217035获得授权并注明出处。`
if(e.clipboardData) {
e.clipboardData.setData('text/plain', copyTxt);
}
else if(window.clipboardData){
return window.clipboardData.setData("text", copyTxt);
}
});

是科技小锅盖正在使用的方法,很好用,兼容各种浏览器!


作者:科技小锅盖


链接:https://www.xiaoguogai.cn/detail/id/40.html


著作权归*科技小锅盖*所有,任何形式的转载都请注明出处。


务人士在讨论工作

引言

在前端开发的世界里,提供用户友好的交互体验始终是我们的追求。其中一个经常被忽视却极其实用的功能就是让用户能够轻松地复制网页上的内容到他们的剪贴板。这种能力在各种场景下都能派上用场,比如让用户复制代码片段、优惠券代码、链接等等。本文将探讨如何使用JavaScript实现这一功能,以及在不同浏览器和设备上的最佳实践。

技术概述

复制内容到剪贴板的传统方法是使用document.execCommand('copy'),但这种方法已经被废弃,因为存在安全性和跨浏览器兼容性的问题。现在推荐的方法是使用navigator.clipboardAPI,这是一个现代的、安全的API,用于读取和写入用户的剪贴板数据。

核心特性和优势

  • 安全性: navigator.clipboardAPI只允许在用户交互(如点击事件)中使用,防止恶意脚本自动复制内容。
  • 跨平台: 支持最新版本的主流浏览器,包括Chrome、Firefox、Safari和Edge。
  • 异步: API是异步的,使用Promise来处理操作结果。

代码示例

async function copyToClipboard(text) {
  try {
    await navigator.clipboard.writeText(text);
    console.log('Content copied to clipboard');
  } catch (err) {
    console.error('Failed to copy to clipboard:', err);
  }
}

技术细节

navigator.clipboardAPI的核心方法是writeText()readText()writeText()接受一个字符串参数并将它写入剪贴板,而readText()则返回一个Promise,解析后为剪贴板上的文本。

分析技术特性和难点

尽管navigator.clipboardAPI提供了强大的功能,但它也有一些限制:

  • 权限: API需要运行在HTTPS环境下才能使用,除非在本地文件系统中运行。
  • 异步操作: 使用Promise意味着我们需要处理异步逻辑,对于不熟悉异步编程的新手来说可能是个挑战。

实战应用

假设你正在构建一个代码分享平台,用户可以在这里查看和复制代码片段。你可以使用navigator.clipboard.writeText()来实现一个“复制”按钮。

代码示例

<button id="copy-button">Copy Code</button>
<pre id="code-snippet">console.log('Hello, World!');</pre>

<script>
  document.getElementById('copy-button').addEventListener('click', async ()=> {
    const codeSnippet=document.getElementById('code-snippet').textContent;
    await navigator.clipboard.writeText(codeSnippet);
    alert('Code copied to clipboard!');
  });
</script>

优化与改进

在实际应用中,可能需要考虑一些额外的优化措施,比如增加用户反馈、处理API不支持的情况以及提高性能。

代码示例

async function copyToClipboard(text) {
  if (navigator.clipboard && navigator.clipboard.writeText) {
    await navigator.clipboard.writeText(text);
    console.log('Content copied to clipboard');
  } else {
    // Fallback for browsers that don't support the Clipboard API
    const textarea=document.createElement('textarea');
    textarea.value=text;
    document.body.appendChild(textarea);
    textarea.select();
    try {
      document.execCommand('copy');
      console.log('Content copied using execCommand');
    } catch (err) {
      console.error('Failed to copy to clipboard:', err);
    }
    document.body.removeChild(textarea);
  }
}

常见问题

问题: 在不支持navigator.clipboardAPI的旧浏览器中怎么办?

解决方案: 使用document.execCommand('copy')作为回退方案,尽管它已被废弃,但在某些情况下仍能提供基本功能。

总结与展望

复制内容到剪贴板的能力是前端开发中一个看似微小却非常实用的功能。通过使用navigator.clipboardAPI,我们可以安全、高效地实现这一目标。随着浏览器对现代API的支持不断增强,我们可以期待更多类似的功能来提升用户体验。在未来,我们可能会看到更多原生的API来简化开发者的工作,同时也为用户提供更安全、更流畅的互联网体验。掌握这些API不仅能够提升你的开发技能,还能让你的网站或应用程序在竞争中脱颖而出。

资料的时候,偶(jing)尔(chang)会碰上这种状况,在复制网页水果的文字时,突然弹出一个提示窗口“该文字不可复制”……这时候就轮到小编上场啦!!!马上教你们几招,轻松跳过这一步,把文字给复制下来。

1、网页源文件

直接到网页的源文件中,就能把文字给复制出来,然后粘贴到Word中,找到「替换」功能,用通配符「<*>」把中间的这些代码给删掉。

要进入到网页的源文件中很简单,只有在网页的空白处,按下鼠标右键,就能看到「查看源文件」的选项,点击就能跳转到源文件的页面了。

2、Console法

直接按下键盘上的F12,也能完成网页文字的复制,而且比上一个方面简单得多。

按下F12之后,网页右边会弹出一个窗口,点击选项卡中的「Console」标签,在底下空白的地方输入「$=0」然后按下Enter键,之后再到网页上选中文字、右键复制试试?这会儿就不会再弹出提示窗口了。

3、手打代码

要是按下F12之后没有反应,那就用这个方法试试。它也可以在操作后,直接到网页上复制文字。

切换输入法到英文模式,然后手动输入这串字符「javascript:void($={});」,弄好之后按下Enter键就好。这个代码必须手打,不能偷懒用复制粘贴的方式,要不就没有作用了。

4、文字识别

最后这个是终极大招,可以完美复制任何网页上的文字。只要我们将这些页面保存成图片、或者是直接截图下来,然后用带有图片文字识别的软件,就能把文字提取出来了。

小编用的是「迅捷PDF转换器」的特色功能,它里面有一个「图片转文字(OCR)」,选择后上传(多张)图片,设置好输出格式和识别效果,最后按下「开始转换」就可以了。

上面这4招,基本可以搞定网页文字复制不了的问题,推荐大家收藏一下,需要用到的时候直接打开看看就好。