2012-05-11 18 views
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> 

答えて

2

これは古いスレッドですが、私は現在、同じ問題に取り組んでいますように、私は既存の答えにあなたを指すようにしたい:要するにcheck execCommand createlink status

、queryCommandState(「CREATELINK」)そのように動作していないようです。私は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!");} 
関連する問題