隐藏内容直到MathJax完成

时间:2014-12-02 19:51:12

标签: jquery http-status-code-404 mathjax url.action

我的网站有大量的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,因为它似乎是导致问题的原因。

1 个答案:

答案 0 :(得分:0)

在玩完之后我意识到我复制的代码很好,但@ Url.Action部分对于我想要做的事情是不必要的。

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

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

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

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