如何测试所选文本是否为链接

How to test if selected text is a link?

本文关键字:文本 是否 链接 何测试 测试      更新时间:2023-09-26

我有一个非常简单的所见即所得编辑器,使用contenteditable。它工作正常,但我想测试所选文本是否被用作链接。 当我使用document.queryCommandState('CreateLink')时,它总是返回false,即使文本在锚点内也是如此。 下面是示例。

我做错了,还是有另一种方法可以测试文本当前是否用作链接?

<script>
    function testLink () {
        // check if this is a link
        var state = document.queryCommandState('CreateLink');
        alert(state);
        // create the link
        document.execCommand ('CreateLink', false, 'http://www.example.com');
    }
</script>
<div contenteditable="true">Here is some sample text to test with.</div>
<br /><br />
<button onclick="testLink();">Test the state of the create link command</button>

这是一个旧线程,但由于我目前正在处理相同的问题,我想向您指出一个已经存在的答案: 检查exec命令创建链接状态

简而言之,queryCommandState("CreateLink")似乎不是这样工作的。我使用 rangy 在我的所见即所得编辑器中处理选择。我检查父节点是否是锚点,然后获取锚点的 href 以将其写入我的链接对话框。这是我脚本中的一个简化示例:

var range = rangy.getSelection().getRangeAt(0);
var container = range.commonAncestorContainer;
if (container.nodeType == 3) {container = container.parentNode;}
if(container.nodeName === "A") {alert ("Yes, it's an anchor!");}