2012-05-11 125 views
3

我有一個非常簡單的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> 

回答

2

這是一個古老的線程,但我目前正在對同樣的問題,我想你指向一個已經存在的答案:check execCommand createlink status

總之,queryCommandState(「建立連結」)似乎並沒有這樣工作。我使用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!");} 
相關問題