指定位置文本替换div和js对选中的文本进行实时替换定位vue

对选中的文本进行实时替换定位vue

比如有一段文字:我是一个很好很好很好好的人

这句里面有很多个【】字,鼠标选中某个好,然后替换该文字。

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue Replace Selected Text</title>
    <!-- 引入 Vue.js -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
</head>
<body>
    <div id="app">
        <div contenteditable="true" @mouseup="handleMouseUp" v-html="content"></div>
        <button @click="replaceSelectedText">替换选中文字</button>
    </div>

    <script>
        new Vue({
            el: '#app',
            data: {
                content: '我是一个很好很好很好好的人',
                replacementText: '强大'
            },
            methods: {
                handleMouseUp(event) {
                    // 当鼠标抬起时触发
                    this.selectedText = window.getSelection();
                },
                replaceSelectedText() {
                    var range = this.selectedText.getRangeAt(0);
                    
                    // 计算选中文字的起始和结束位置
                    var startOffset = range.startOffset;
                    var endOffset = range.endOffset;

                    // 替换选中文字
                    var newText = this.content.substring(0, startOffset) + this.replacementText + this.content.substring(endOffset);
                    
                    // 更新编辑区域的文本
                    this.content = newText;
                }
            }
        });
    </script>
</body>
</html>

### 回答1: 你可以使用一个名为DOMPurify的库来清除富文本编辑器中的HTML标签,它可以有效地过滤不安全的HTML标签和属性。下面是一个使用该库实现去除HTML标签的示例代码: ```javascript import DOMPurify from 'dompurify'; const dirtyHtml = '<p><span>Some</span> <b>HTML</b> <i>text</i></p>'; const cleanText = DOMPurify.sanitize(dirtyHtml, { ALLOWED_TAGS: [] }); console.log(cleanText); // Output: Some HTML text ``` 在上面的代码中,我们首先导入DOMPurify库。然后,我们创建一个包含HTML标签的字符串。接下来,我们使用DOMPurify的sanitize()方法,将其传入要保留的标签列表。在这个例子中,我们传入一个空的标签列表,这将导致所有HTML标签都被过滤掉。最后,我们输出经过过滤的纯文本。 ### 回答2: Vue文本编辑器中要去掉标签,可以利用正则表达式或者DOM操作来实现。 方法一:利用正则表达式 可以使用正则表达式将标签去掉,示例代码如下: ```javascript function removeTags(input) { return input.replace(/<[^>]+>/g, ''); } // 使用示例 let content = '<p>这是一段带有标签的文本</p>'; let text = removeTags(content); console.log(text); // 输出:这是一段带有标签的文本 ``` 方法二:利用DOM操作 可以创建一个DOM节点,将内容作为innerHTML设置进去,然后获取节点的textContent,示例代码如下: ```javascript function removeTags(input) { let div = document.createElement('div'); div.innerHTML = input; return div.textContent || div.innerText || ''; } // 使用示例 let content = '<p>这是一段带有标签的文本</p>'; let text = removeTags(content); console.log(text); // 输出:这是一段带有标签的文本 ``` 以上两种方法都可以实现将富文本编辑器的内容中的标签去掉,得到纯文本内容。根据实际需求选择其中一种方法即可。 ### 回答3: Vue文本编辑器的文字去掉标签,可以通过使用正则表达式或者DOM操作来实现。 一种简单的方法是使用正则表达式,通过替换标签标记来去除标签。例如,可以使用以下代码: ```javascript // 假设文本内容保存在一个名为content的变量中 content = content.replace(/<[^>]+>/g, ''); // 这将删除所有的HTML标签,只保留纯文本内容 ``` 另一种方法是使用DOM操作,将文本内容插入到一个临时的div元素中,然后获取纯文本内容。以下是一个示例代码: ```javascript // 假设文本内容保存在一个名为content的变量中 // 创建一个新的div元素 const tempDiv = document.createElement('div'); // 将文本内容插入到div中 tempDiv.innerHTML = content; // 获取纯文本内容 const plainText = tempDiv.textContent || tempDiv.innerText; // 使用plainText变量来获取只包含纯文本内容,而不包含标签 ``` 这两种方法都可以实现去除Vue文本编辑器中的HTML标签,让文本只包含纯文本内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值