在 JavaScript 中获取选中或突出显示的文本

本文介绍了如何利用DOMAPI中的window.getSelection()方法,结合JavaScript、HTML和CSS,实现在用户选择或高亮网页文本时,动态显示所选内容。通过监听onmouseup事件,获取并显示用户在段落中选择的文本,将结果显示在一个红色的span标签内。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文将展示我们如何使用 DOM API 来让用户在屏幕上突出显示或选择文本。 DOM API 为我们提供了 getSelection() 方法,该方法允许我们获取用户选择的文本。

窗口对象可以直接访问这个方法。 让我们看看如何实际实现此功能。


使用 JavaScript 中的 window.getSelection() 方法从网页中获取选中或突出显示的文本

JavaScript 中的 window.getSelection() 方法允许我们获取用户在屏幕上突出显示或选择的文本。 此方法返回一个对象,该对象包含与屏幕上突出显示的文本相关的信息。

在本教程中,我们将首先使用 body HTML 标记内的一些随机词的 <p> HTML 标记创建一个段落。

我们将在此段落标记上调用一个名为 getSelectedText() 的方法,该方法将在用户离开鼠标时调用,即,当触发 onmouseup 事件时。 我们将在 <script> 标记内声明此方法。

然后,我们创建了一个 div HTML 元素,其中包含一些文本,在关闭 div 标签之前,我们还添加了一个 span 标签。 我们的目标是在 span 标签内显示用户突出显示的段落中的文本。

HTML代码片段:

<body>
    <p onmouseup="getSelectedText();">
      Lorem, ipsum dolor sit amet consectetur adipisicing elit. Natus eum
      consectetur nam quisquam voluptates quis quibusdam consequuntur, eos ab
      magnam ducimus animi iusto soluta veniam doloremque a vel vero corrupti
      repellendus at. Debitis necessitatibus quos illum deserunt exercitationem
      suscipit autem excepturi aliquid accusamus cumque sapiente dicta
      consequuntur delectus, fuga itaque!
    </p>

    <div>The selected text is: <span id="showText"></span></div>
</body>

现在我们已经创建了 HTML 结构,我们还可以使用其 id showText 为我们的 div 元素和 span 标签提供一些样式。 用户将突出显示或选择的任何文本都将以红色显示。

CSS代码片段:

div {
    font-size: 1.5em;
    margin-top: 2em;
}

#showText {
    color: red;
}

现在我们已经完成了 HTML 和 CSS 文件的处理,是时候处理 JavaScript 代码了。

由于我们希望所选文本显示在 span 标记内,因此我们将使用 document.getElementById() 方法在 JavaScript 中访问 span 元素。 然后我们将其引用存储在 showText 变量中。

我们将声明 getSelectedText() 函数,负责获取用户选择的文本。 在这个函数中,我们将创建一个名为 selectedText 的变量,该变量将被初始化为一个空字符串。

我们暂时使用这个变量来存储用户选择的字符串或文本。

在这一点上,我们还将 showText,即我们的 span 标签的内容,设为空。 这是因为无论用户之前选择了什么内容,我们首先要清除它,然后再显示用户当前选择的新文本。

在此阶段,我们将首先检查浏览器窗口是否可以访问 getSelection()。 所有现代浏览器(如 Chrome 和 Firefox)都可以访问此方法。

然后我们使用 window.getSelection() 方法,这将帮助我们获取用户选择的文本。

JavaScript 代码片段:

let showText = document.getElementById("showText");

function getSelectedText() {
    var selectedText = "";
    showText.innerHTML = "";

    if (window.getSelection) {
    selectedText = window.getSelection().toString();
    showText.innerHTML = selectedText;
    }
}

window.getSelection() 方法返回一个 Selection 对象,它表示用户选择的文本范围。

由于我们需要实际文本而不是对象,我们必须使用 toString() 方法将该对象转换为字符串,然后将用户选择的文本存储在 selectedText 变量中。

如果您将 window.getSelection() 方法返回的对象传递给某些其他方法,例如 window.alert()document.write(),那么您不必对该对象调用 toString() 方法 .

这是因为 window.alert()document.write() 会自动对该对象调用 toString() 并将该对象转换为文本格式。

现在我们在 selectedText 变量中有了用户在屏幕上选择的实际文本,然后我们可以使用其 innerHTML 属性将其分配给 span 标记,如 showText.innerHTML。

输出:

获取选定的文本 JavaScript

运行上述代码后,程序的输出将如下所示。 使用 window.getSelection() 方法,您不仅可以从段落标签中获取选定的文本,还可以将此方法与标题、div 等其他标签一起使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迹忆客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值