MathJax не работает с iFrame

Я пытаюсь вызвать функцию MathJax в iFrame с помощью события click. Вот код

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");
        }
    }
}

Вложенное условие Refresh() будет выполняться только в том случае, если последние шесть символов равны $$<br>

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


person Harsh Kanakhara    schedule 02.03.2015    source источник


Ответы (2)


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

person Davide Cervone    schedule 02.03.2015
comment
Спасибо за ваш ответ. Поскольку я никогда раньше не работал с iFrame, не могли бы вы подсказать, как загрузить MathJax в iFrame. Пожалуйста, дайте мне демонстрационный код - person Harsh Kanakhara; 03.03.2015

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

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

person Harsh Kanakhara    schedule 05.03.2015