2015-03-02 2 views
1

Я пытаюсь вызвать функцию MathJax на iFrame по событию клика. Вот кодMathJax не работает с iFrame

HTML

<body onLoad="ifon();"> 
    <iframe name="richTextField" id="richTextField" style="border:#000000 1px solid; width:700px; height:300px;"></iframe> 
<button onclick="refresh();"></button> 
</body> 

Javascript

function ifon(){ 
    richTextField.document.designMode = 'On'; 
} 
function refresh(){ 
    var richTextField = document.getElementById("richTextField"); 
    if(richTextField != null) { 
     var get_iframe_text = richTextField.contentWindow.document.body.innerHTML; 
     if(get_iframe_text.slice(-6) == "$$<br>"){ 
      //Trying to call MathJax on iFrame 
      MathJax.Hub.Queue(["Typeset",MathJax.Hub,richTextField]); 
      alert("Success"); 
     } 
    } 
} 

Обновление экрана() вложенными, если условие будет выполняться только тогда, когда последний из шести символов являются $$<br>

Может ли кто-нибудь помочь мне, как вызвать MathJax.Hub.Queue ([]) на iFrame?

ответ

0

Наконец-то я нашел решение этой проблемы. Просто замените iFrame на HTML5 ContentEditale Div.

Сейчас он работает отлично ...

1

Вы не можете использовать MathJax извне iframe для обработки математики в iframe. Вам нужно загрузить MathJax внутри самого iframe. Вы все равно можете запускать MathJax снаружи, если вам нужно, вызывая MathJax, который находится внутри iframe, при условии, что содержимое находится из того же домена, что и контейнер. В противном случае вам нужно будет настроить прослушиватель событий и использовать postMessage для связи с iframe.

+0

Спасибо за ответ. Поскольку я никогда раньше не работал с iFrame, вы можете мне посоветовать, как загрузить MathJax в iFrame. Пожалуйста, дайте мне демо-код –