1

問題在於execCommand,即使在IE10中也沒有正確執行。 例如, 當我點擊粗體並繼續打字時,在IE中它不會使字母變爲粗體,我必須選擇文本並單擊粗體以使粗體顯示。在所有其他瀏覽器中,當我點擊粗體按鈕並繼續輸入時,它將使字母變爲粗體。execCommand在ie中不能正常工作

這裏是的jsfiddle http://jsfiddle.net/Q65Qt/

下面是代碼

var oDoc, sDefTxt; 

function initDoc() { 
    oDoc = document.getElementById("textBox"); 
    sDefTxt = oDoc.innerHTML; 
    if (document.compForm.switchMode.checked) { 
     setDocMode(true); 
    } 
} 

function formatDoc(sCmd, sValue) { 
    if (validateMode()) { 
     document.execCommand(sCmd, false, null); 
     oDoc.focus(); 
    } 
} 

function validateMode() { 
    if (!document.compForm.switchMode.checked) { 
     return true; 
    } 
    alert("Uncheck \"Show HTML\"."); 
    return false; 
} 

function setDocMode(bToSource) { 
    var oContent; 
    if (bToSource) { 
     oContent = document.createTextNode(oDoc.innerHTML); 
     oDoc.innerHTML = ""; 
     var oPre = document.createElement("pre"); 
     oDoc.contentEditable = false; 
     oPre.id = "sourceText"; 
     oPre.contentEditable = true; 
     oPre.appendChild(oContent); 
     oDoc.appendChild(oPre); 
    } else { 
     if (document.all) { 
      oDoc.innerHTML = oDoc.innerText; 
     } else { 
      oContent = document.createRange(); 
      oContent.selectNodeContents(oDoc.firstChild); 
      oDoc.innerHTML = oContent.toString(); 
     } 
     oDoc.contentEditable = true; 
    } 
    oDoc.focus(); 
} 

下面是的jsfiddle http://jsfiddle.net/Q65Qt/

請幫助用鏈路,提前

回答

1

問題ISN謝謝與document.execCommand()聯繫。相反,問題似乎是單擊按鈕時可編輯元素失去焦點,結果在焦點恢復時失去了大膽。

最簡單的解決方案是防止按鈕點擊竊取焦點。您可以通過使用mousedown事件,而不是click事件,並防止瀏覽器的默認行爲做到這一點:

http://jsfiddle.net/Q65Qt/1/

此外,也可以使按鈕可選擇。例如,請參閱https://stackoverflow.com/a/12527098/96100

相關問題