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

时间:2012-05-11 18:46:43

标签: javascript wysiwyg

我有一个非常简单的WYSIWYG编辑器,使用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 个答案:

答案 0 :(得分:3)

这是一个旧帖子,但由于我目前正在解决同样的问题,我想指出一个已经存在的答案: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!");}