1

我的网站有大量的 MathJax,我正在使用以下代码来防止某些对象在页面上可见,直到所有的 MathJax 公式都已呈现。

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

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

我从这里复制了这段代码 。

它运行良好,但现在当我检查页面上的元素时,我在控制台中看到以下错误。

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,因为这似乎是导致问题的原因。

4

1 回答 1

0

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

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

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

这似乎也可以正常工作,并且我在控制台中没有错误消息。见小提琴

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

于 2014-12-02T21:02:57.043 回答