我有一个非常简单的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>
答案 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!");}