2014-12-02 95 views
1

我的网站有大量的MathJax,我使用下面的代码来防止某些对象在页面上可见,直到所有的MathJax公式被渲染。隐藏内容,直到MathJax完成

$("#myDiv").load('@Url.Action("ActionResultMethod", "ControllerName",{controller parameters})', function() { 
    MathJax.Hub.Queue(
    ["Typeset",MathJax.Hub,"myDiv"], 
    function() { 
     $("#myDiv").fadeIn(300); 
    } 
); 
}); 

特别是,我与ID myDiv一个div,并在页面加载其display设置为none。当MathJax完成渲染时,上面的代码使div淡入。

我从here复制了此代码。

它正在工作完美,但现在当我检查我的页面上的元素时,我在控制台中看到以下错误。

http://www.mywebsite.com/@Url.Action(%22ActionResultMethod%22, 
Failed to load resource: the server responded with a status of 404 (Not Found) 

注意:我用mywebsite.com取代了我的实际网址。

谁能告诉我为什么会发生这种情况,以及如何解决它?重申一遍,代码似乎完美运行,并且我没有发现任何问题。我只是看到这个错误。

您可以在以下Fiddle中看到此操作。如果您检查页面上的元素,则会在控制台中看到相同的错误。


编辑:我也有兴趣知道,如果任何人有办法实现与MathJax此相同的任务,但不使用@ Url.Action,因为它似乎要的东西造成的问题。

回答

0

玩过之后,我意识到我复制的代码是好的,但@ Url.Action部分对于我所要做的事情来说是不必要的。

特别是,我刚刚删除了MathJax.Hub.Queue以及括号内的部分。所以代码现在只是:

MathJax.Hub.Queue(
    function() { 
    $("#myDiv").fadeIn(300); 
    } 
); 

这似乎是正常工作,我没有控制台中的错误消息。见Fiddle

总而言之,这似乎是一个非常好的解决方案,使用jQuery来延迟显示对象,直到MathJax渲染完毕。