Refreshing Javascript on the page without refreshing HTML
关于我的问题的一点背景。
我正在当前显示HTML的该div中更新MathML。 第一次加载页面时,if运行MathJax脚本并完美显示所有MathML。
当我单击"预览更改"时,该按钮将在文本区域中进行当前更改并将其显示在预览div上,MathML消失。
我认为这里的问题是刷新div不会触发MathJax脚本。 我尝试了$ .getScript(),并且每次单击预览更改按钮时都尝试使用document.createElement(script)添加脚本,但是所有这些都无济于事。
我希望有人能帮我这个忙。
先感谢您。
-
听起来您需要在刷新ajax结果时重新初始化MathJax。 您能否提供您到目前为止尝试过的一些代码?
-
另外,我不使用AJAX。 我只是做一个$(DivIDHere).html(htmlToReplaceHere)
-
啊,我的错。 如果可能,我希望查看您的HTML以阐明MathJax如何与其交互。 MathJax是否只是返回一个值,然后将其插入到div中? 如果您只是替换DivIDHere中的HTML内容,则没有理由不能一次又一次地替换它。 如果销毁您选择的div,那将是一个问题。
-
这是HTML ,这是更新HTML $(#preview).html($(#hdnPreviewHTML).val());的Javascript,所有MathJax所做的就是将HTML中的所有
标记转换为MathML。
-
var script = document.createElement("script"); script.type ="textjavascript"; script.src ="ScriptsMathJaxv2.1Ma??thJax.js?config=TeX-AMS-MML_HTMLor MML"; document.getElementsByTagName("head")[0].appendChild(script) ;我以这种方式尝试过,但这是行不通的。
-
#hdnPreviewHTML的内容是什么? val()主要用于从表单元素获取值。 您可能要尝试$(#preview).html($(#hdnPreviewHTML).html());。
-
那里的答案奏效了,但是您的帮助非常感谢。 :D
MathJax.Hub.Typeset()是JavaScript命令,可以重新呈现页面内或通过当前更改更新的单个元素内的数学内容。 如果您确定所有排版均已完成,则可以直接调用它,但是通常最好使用安全的方式来调用它,例如MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
在此处阅读有关如何使用它的更多说明:http://docs.mathjax.org/en/v1.1-latest/typeset.html
例如,在使用jQuery调用更新MathJax.Hub.Queue(["Typeset",MathJax.Hub,"previewdiv"]);内容后,MathJax.Hub.Queue(["Typeset",MathJax.Hub,"previewdiv"]);将重新呈现ID为previewdiv的HTML元素的更新内容。
-
真棒! 谢谢,那行得通。 这是我使用的代码。 var divML = document.getElementById("preview"); MathJax.Hub.Queue(["Typeset", MathJax.Hub,divML]);再次感谢!