3

contenteditable を使用した非常にシンプルな WYSIWYG エディターがあります。正常に動作しますが、選択したテキストがリンクとして使用されているかどうかをテストしたいと思います。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

これは古いスレッドですが、現在同じ問題に取り組んでいるので、既存の回答を紹介したいと思います: check execCommand createlink status

つまり、 queryCommandState("CreateLink") はそのようには機能しないようです。WYSIWYG エディタで選択範囲を操作するために 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!");}
于 2013-02-15T16:51:43.127 に答える