文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么使用JavaScript读取所选文本并将其复制到剪贴板

2024-04-02 19:55

关注

本篇内容介绍了“怎么使用JavaScript读取所选文本并将其复制到剪贴板”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

选择并读取页面上非表单元素的文本内容

继续前进,我们还可以负责并动态选择然后在页面上检索我们想要的内容,例如特定DIV的内容,而不是简单地检索用户选择的内容。这与仅使用元素innerHTML innerText属性来获取其内容非常不同; 我们希望 通过JavaScript 实际选择该内容,从而打开其他可能的操作,例如将其复制到用户的剪贴板。

要选择表单字段元素的文本内容,我们首先创建一个新的 Range对象并将其设置为包含所需的元素。然后,将范围添加到Selection对象以实际选择它。让我们看看它是如何工作的,这个函数根据传入元素的元素动态选择元素的文本内容:

1

2

3

4

6

7

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">function selectElementText(el){</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

    var range = document.createRange()//创建新的范围对象</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

    range.selectNodeContents(el)//设置范围以包含所需的元素文本</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

    var selection = window.getSelection()//从当前用户选择的文本中获取Selection对象</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

    selection.removeAllRanges()//取消选择任何用户选择的文本(如果有)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

    selection.addRange(range)//为Selection对象添加范围以选择它</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font>

要创建一个用于添加范围的对象,我们使用; 因为默认情况下此方法会返回用户选择的文本(如果有的话),所以我们会立即调用其方法来清除平板。然后,我们开始创建一个空白范围,将元素的内容归零以选择使用,然后将该范围添加到对象中以进行选择。Selection window.getSelection()removeAllRanges()  range .selectNodeContents() Selection

一旦我们选择了我们想要阅读的文本,我们就转向我们之前的getSelectionText()方法来读取所选元素的内容,例如:

演示:

“我的妈妈总是说,'生活就像一盒巧克力。你永远不会知道你会得到什么。'” - Forrest

选择并检索文本

代码:

1

2

3

4

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">var para = document.getElementById('para')</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

selectElementText(para)//选择我们希望阅读的元素文本</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

var paratext = getSelectionText()//读取用户选择</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

alert(paratext)//提醒“我的妈妈总是说...”</font></font>

怎么使用JavaScript读取所选文本并将其复制到剪贴板 选择和读取表单元素的内容,如INPUT文本或TEXTAREA

为了选择和读取表格相关的字段值,例如INPUT文本和TEXTAREA,该过程不同于选择常规文本。我们大多数人已经知道选择表单字段的整个值,我们可以使用 inputElement.select()*,并检索该值,探测 inputElement.value。但是,还可以通过编程方式选择字段值的一部分并获取该值。让我们看看如何做到这一点。

- 以编程方式选择字段值的一部分

要动态选择INPUT文本或TEXTAREA元素的一部分,请使用以指示字段中所需选择的起始和结束索引:  formElement.setSelectionRange()

1

2

3

4

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">var emailfield = document.getElementById(“email”)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

emailfield.focus()//在setSelectionRange()工作之前,这在大多数浏览器中都是必需的</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

emailfield.setSelectionRange(0,5)//选择输入字段的前5个字符</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

emailfield.setSelectionRange(5,emailfield.value.length)//选择输入字段的第5个到最后一个字符</font></font>

请注意,第二个参数 formElement.setSelectionRange()应该是要选择的结束字符的索引加1,因此要选择表单字段的前5个字符,要输入的结束索引值应为5或4(第5个字符的索引) )加1。

演示:

选择前5个字符   选择第5个到最后一个字符

*注意: 在iOS设备中(从iOS9开始),使用inputElement.select()快速选择所有表单元素的内容似乎不起作用。但是,使用inputElement.setSelectionRange()的确如此。因此,以下选择跨浏览器和设备的所有表单字段的文本:

inputElement.setSelectionRange(0, inputElement.value.length)

- 读取字段值的选定部分

无论如何选择表单字段的值的一部分,无论是通过使用setSelectionRange()动态选择该部分,还是用户拖动他/她的鼠标来进行用户定义的选择,检索选择的方法是获取指数选择的开始和结束字符,然后使用它们从表单字段的值中提取该部分。我们可以使用以下方法获取活动选择的索引:

上述属性在从表单字段中获取任何用户选定文本时特别有用,其中选择的索引尚不为人所知。以下演示回应了用户使用以下属性从TEXTAREA中选择的内容:

演示(在textarea中选择一些文本):

输出:

代码:

1

2

3

4

6

7

8

9

10

11

12

13

14

15

16

17

18

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;"><textarea id =“quote”cols =“50”rows =“5”></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

这里有一些文字</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

</ textarea>的</font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<div id =“output”> </ div></font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<SCRIPT></font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

var quotearea = document.getElementById('quote')</font></font><font></font>

var output = document.getElementById('output')<font></font>

quotearea.addEventListener('mouseup', function(){<font></font>

    if (this.selectionStart != this.selectionEnd){ // check the user has selected some text inside field<font></font>

        var selectedtext = this.value.substring(this.selectionStart, this.selectionEnd)<font></font>

        output.innerHTML = selectedtext<font></font>

    }<font></font>

}, false)<font></font>

<font></font>

</script>

我们mouseup在目标TEXTAREA上附加一个“ ”事件,以便在用户将鼠标放入其中时进行监听。在事件处理函数内部,为了检测用户选择的内容,首先,我们检查TEXTAREA selectionStart 和selectionEnd属性是否包含不同的值 - 如果它们相同,则表示没有选择任何内容,在这种情况下它们都指向输入光标后面的字符。如果它们的值不同,我们继续将所选文本的索引映射到表单字段值的值,以使用派生实际选定的文本 formElement.value.substring()

“怎么使用JavaScript读取所选文本并将其复制到剪贴板”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯