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

3

我有一个非常简单的所见即所得编辑器,使用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>
1个回答

4
这是一个旧的帖子,但由于我目前正在解决同样的问题,我想指向一个已经存在的答案:check execCommand createlink status 简而言之,queryCommandState("CreateLink") 似乎不起作用。我使用 rangy 处理 WYSIWYG 编辑器中的选择。我检查父节点是否为锚点,然后获取锚点的 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!");}

像魔法一样运作。 - ucMedia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接