2012-10-16 15 views
5

にMathJax:挿入私はそうのように、のcontentEditableのdivの中にいくつかのMathJaxコードを挿入しようとしているのcontentEditableのdiv

<!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> 

とOKレンダリング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)は、独自の機能、タグやコードを再移植しますrefreshMathJaxにMathJaxロジックを移動します。

2)最初にページを読み込んだときにこの関数を呼び出し、再びonBlurを呼び出します。

3)編集可能な要素onFocusをクリアします。これがなければ、編集可能な要素を簡単に再利用することはできません。 onFocusコールバック関数を変更して、contentEditable htmlを元のLaTeXコンテンツに置き換えることができます。

+0

これはかなり古い質問だったと私は気付きました。誰かがまだ私の答えが役に立つと思うことを願っています! – goldins

関連する問題