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>
4

1 回答 1

4

这是一个旧线程,但由于我目前正在处理同样的问题,我想指出一个已经存在的答案:检查 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!");}
于 2013-02-15T16:51:43.127 回答