【问题标题】:Detect when MathJax has finished loading in UIWebView检测 MathJax 何时在 UIWebView 中完成加载
【发布时间】:2012-12-17 19:08:40
【问题描述】:

我有一个由几个 UIWebViews 组成的界面,所有这些都是动态提供的 HTML,注入了 MathJax javascript,用于在窗口中显示相当多的方程。

MathJax 存储在本地,并通过本教程中概述的方法进行解析: http://new2objectivec.blogspot.co.uk/2012/03/tutorial-how-to-setup-mathjax-locally.html

不幸的是,我不擅长 javascript,而且 MathJax 脚本似乎是通过存储临时 HTML 文件,然后将它们传递回 UIWebViews(在教程中概述)的相当复杂的过程输入到 NSStrings 中的。

这让我有点困惑,但它运行良好,尽管加载时间很短(取决于加载的方程数量)。

我想知道 MathJax 何时停止运行并完全加载。

我试过听委托上的 didFinishLoading 方法无济于事:只被调用了几次(每个 webview),即使这样调用也太早了。无论如何,我无法理解关于检查 JavaScript 何时在 UIWebView 中完成加载的几个 SO 问题。

在 MathJax 发挥其魔力的同时在 UIWebViews 前面放置一个临时加载视图绝对是完美的,这样可以避免用户混淆。但是,正如您可能知道的那样,我在检测它时遇到了很多麻烦。

是否有人对在 UIWebViews 中使用 MathJax/javascript 加载检测有任何建议或经验?

非常感谢任何帮助,因为我当然不想依赖任意 NSTimers(即“假”加载屏幕)。

【问题讨论】:

    标签: iphone objective-c ios uiwebview mathjax


    【解决方案1】:

    您可以在 MathJax 完成排版后通过包含来使函数运行

    <script>
    MathJax.Hub.Queue(function () {
      ... your code here...
    });
    </script>
    

    在加载 MathJax.js 本身的脚本之后的 HTML 文件中。

    【讨论】:

    • 这太好了,我将用一些上下文代码更新我的问题,以了解如何获得完整的解决方案......你知道 MathJax 开始加载时调用了哪个函数吗?我有不止一个 UIWebView,所以我需要计算完成加载的数量。
    • 我不明白这个问题。 “当 MathJax 开始加载时”是什么意思?有许多不同的东西被加载:MathJax.js 本身、配置文件、各种输入和输出 jax、扩展、字体、字体数据等。每一个都是在不同的时间加载的,所以不是让我清楚你在追求什么。您似乎对 MathJax 何时完成感兴趣,这就是我在上面回答的内容。如果您需要与 MathJax 同步,可以使用 ...your code here... 来执行此操作。让该代码协调您的不同 UIWebView 实例。
    • @DavideCervone 如何在 MathJax 3 中执行此操作?
    • @Sr.Schneider,这在performing actions after typesetting.的文档中有解释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    相关资源
    最近更新 更多