2012-10-16 62 views
5

我試圖插入一些MathJax代碼爲CONTENTEDITABLE DIV,像這樣:插入MathJax到CONTENTEDITABLE格

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<meta charset=utf-8 /> 
    <script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">  </script> 

</head> 
<body> 
    <div id="editor" contentEditable="true" style="width:400px;height:400px;"> 
</div> 

和JS

$(document).ready(function() { 

    $('#editor').focus(); 

    var code = "\\alpha"; 

    var html = '<span id="_math"><script type="math/tex;mode=in-line">'+ code +'</script></span>'; 

    document.execCommand('insertHTML', false, html); 

    MathJax.Hub.Queue(["Typeset", MathJax.Hub, '_math']); 

}); 

這使得確定,但是插入後,元素會凍結,並且不能進一步輸入。有人可以在這裏指出問題。

+1

未來的注意事項:cdn.mathjax.org即將報廢,請查看https://www.mathjax.org/cdn-shutting-down/獲取遷移提示。 –

回答

1

當內容發生變化時,您需要調用MathJax。看到這個小提琴:http://jsfiddle.net/rfq8po3a/(注意,我不得不在HTML中跳過<>)。

這與一些事情來實現:

1)移動MathJax邏輯到它自己的功能,refreshMathJax這將重新填充標記和代碼。 2)在第一次加載頁面時再次調用此函數,並再次調用Blur。

3)清除可編輯元素onFocus。如果沒有這個,可編輯元素不能輕易重用。您可以將onFocus回調函數更改爲使用原始LaTeX內容替換contentEditable html。

+0

我剛剛意識到這是一個很老的問題;我希望有人仍然認爲我的答案很有用! – goldins

相關問題