2017-03-28 70 views
3

我正在使用html內置的contenteditable功能實現自定義文本編輯器。我需要知道用戶在文本編輯器上選擇文本時是否大膽。如何檢查,所選文本是否爲粗體(contenteditable)

在這裏,我有什麼權利現在:

HTML

<button onclick="boldit()">B</button> 
<div id="editor" contenteditable="true" class="email-body"> 
    This is an <strong>editable</strong> paragraph. 
</div> 

的Javascript

function boldit(){ 
document.execCommand('bold'); 
} 
+2

閱讀如何在詢問之前詢問[mcve]。 –

+0

你有沒有檢查http://stackoverflow.com/questions/22323035/jquery-check-if-font-weight-is-normal-or-bold? –

+0

@SagarV爲這個問題增加了一個示例代碼。 – Dasun

回答

2

jQuery(function($) { 
 
    $('.embolden').click(function(){ 
 
     if(selectionIsBold()){ 
 
      alert('bold'); 
 
     } 
 
     else { 
 
      alert('not bold'); 
 
     } 
 
    }); 
 
}); 
 

 
function selectionIsBold() { 
 
    var isBold = false; 
 
    if (document.queryCommandState) { 
 
     isBold = document.queryCommandState("bold"); 
 
    } 
 
    return isBold; 
 
}
.bold { 
 
    font-weight: bold; 
 
}
<div contenteditable="true" class="textEditor">Some <span class="bold">random </span>text.</div> 
 
<a href="#" class="embolden">Is Bold Text</a> 
 
<script 
 
    src="https://code.jquery.com/jquery-3.2.1.min.js" 
 
    integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" 
 
    crossorigin="anonymous"></script>

突出顯示文本,然後單擊鏈接。

+0

document.queryCommandState(「bold」); //這是我一直在尋找的命令。謝謝!!! – Dasun

3

的可靠的方法是遍歷父樹的getComputedStyle檢查。

我假設你已經有了選定的元素。

function isBold(_element) { 
    var element = _element; 
    while (element) { 
    var style = getComputedStyle(element).fontWeight; 
    if (Number(fontWeight) > 400 || fontWeight === 'bold' || fontWeight === 'bolder') { 
     return true; 
    } 
    element = element.parentNode; 
    } 
    return false; 
} 
+0

在鉻fontWeight永遠不會更大膽,但我會離開它,以防萬一有跨瀏覽器問題。由於錯別字也更新了答案。 – FakeRainBrigand

+0

如何從選擇中獲取元素? Window.getSelection();返回一個不表示爲html元素的選擇對象。 – Dasun

相關問題