2017-11-10 13 views
0

リッチテキストエディタを作成していますが、同じボタンを使用して選択項目をリンクまたはリンク解除したいと考えています。選択項目にリンクが含まれているかどうかを確認してください

document.execCommand('createLink'...)およびdocument.execCommand('unlink'...)は、ユーザがwindow.getSelection().toString()をリンクおよびリンク解除できるようにします。

しかし、最初に選択がリンクされているかどうかを判断するための組み込みメソッドがないので、私の質問はです。セレクションがリンクされているかどうかチェックするにはどうすればいいですか?

たとえば、document.queryCommandState('bold')が正常に動作しても、かかわらず、私はdocument.queryCommandState('createLink')document.queryCommandState('unlink')を使用して試してみましたが、両方のクエリは常にfalseを返します。

+0

あなたはjQueryのを使用していますか?それともバニラのJavaScriptですか? –

+0

@AlvaroMontoro vanilla JS – Anthony

+0

@AlvaroMontoroよく、私はそれをやる方法の1つを考えました。選択範囲をキャッシュしてアンカータグのテキストを検索し、その方法で変更することができます – Anthony

答えて

0

私はSOに周り蹴り、当分の間、十分に機能次のコードを見つけた:

const isLink =() => { 
    if (window.getSelection().toString !== '') { 
    const selection = window.getSelection().getRangeAt(0) 
    if (selection) { 
     if (selection.startContainer.parentNode.tagName === 'A' 
     || selection.endContainer.parentNode.tagName === 'A') { 
     return [true, selection] 
     } else { return false } 
    } else { return false } 
    } 
} 
関連する問題