当前位置: 首页 > 知识库问答 >
问题:

使用ReactJS自动选择跨度标记

丰博
2023-03-14

我希望自动选择一个跨度元素中的一些文本,以便用户可以轻松地复制它。

我试过使用。选择()但是,这似乎只适用于

我的文本在弹出窗口中呈现,因此我希望为用户显示所选内容。

以下是我尝试过的:

import React from "react";
const PropTypes = React.PropTypes;

class CopyText extends React.Component {
    constructor(props) {
        super(props);
        this.handleRef = this.handleRef.bind(this);
    }

    componentDidUpdate() {
        this.copyText.select();
    }

    handleRef(component) {
        this.copyText = component;
    }

    render() {
        return (
            <span ref={this.handleRef}>
                {this.props.text}
            </span>
        );
    }
}

CopyText.propTypes = {
    text: PropTypes.string
};

export default CopyText;

有人能帮我创建一个跨元素的自定义自动选择文本功能吗?非常感谢你的建议。


共有1个答案

吴靖
2023-03-14

你可以试试这个

<span ref={textAreaRef}>your text</span>
<Button type="button" onClick={() => copyEmail()}>copy</Button>

复制功能应该是这样的:

const copyEmail = () => {
    let currentNode = textAreaRef.current;
    if (document.body.createTextRange) {
        const range = document.body.createTextRange();
        range.moveToElementText(currentNode);
        range.select();
        document.execCommand('copy');
        range.remove();
    } else if (window.getSelection) {
        const selection = window.getSelection();
        const range = document.createRange();
        range.selectNodeContents(currentNode);
        selection.removeAllRanges();
        selection.addRange(range);
        document.execCommand('copy');
        selection.removeAllRanges();
    } else {
        alert("Could not select text, Unsupported browser");
    }
}

我已经使用useRef创建了一个ref

const textAreaRef = useRef(null);
 类似资料:
  • 下拉列表的超文本标记语言代码 通过单击spans下拉列表将显示。下拉值在li内 如何选择li中提到的选项。我们只有span ID。

  • 问题内容: 在这里,我尝试使用Selenium脚本从下拉列表中选择一个值,但 在控制台中却收到此错误,例如 “线程“主”中的异常” org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应 为“选择”但为“跨度”。 下拉菜单中有多个值,我需要在其中选择一个值。 问题答案: @MosheSlavin的分析和回答是正确的方向。 这个错误

  • 在ListView中,我可以按下< kbd>Ctrl Shift并单击项目进行选择。但是,我想拖动鼠标来选择项目(如DataGridView)。我尝试了下面的代码,我遇到了这样的问题: 我的代码:

  • 是否有可能设置IntelliJ IDEA,使我可以使用光标键进行列选择,类似于我在Notepad++、Visual Studio或FlashDeveloper中的操作。 例如,当我键入代码时,我几乎总是只通过使用键盘来完成导航。在前面提到的IDE中,我可以通过按住shift+alt,然后敲击将光标扩展到上面的行来快速选择代码块。然后,我可以按住Shift+Alt+Ctrl并点击或以快速跳过单词并选

  • 我想选择<代码> 然后我想迭代元素并获取它们的文本。但未选择 div。如果我只尝试使用div作为css选择器,则显示正确的文本信息,但是还有另一个不合适的div文本,因此我必须使用类名。 我哪里错了?

  • 我在写这个代码 当我启动我的应用程序时,它会自动进入第一个底部(我有三个底部)。我想在导航视图中将其更改为第二个底部。请帮帮我