【问题标题】:OnPageFinished() gets called too early for WebViewOnPageFinished() 被 WebView 调用得太早
【发布时间】:2015-11-14 16:58:10
【问题描述】:

我有一个 webview 元素,其中包含我从 android studio 中的外部脚本加载的 jqmath 脚本,将变量传递到脚本中的函数如下所示:

void UpdateFunc() {
    js = "<html><head>"
            + "<link rel='stylesheet' href='file:///android_asset/mathscribe/jqmath-0.4.3.css'>"
            + "<script src='file:///android_asset/mathscribe/jquery-1.4.3.min.js'></script>"
            + "<script src='file:///android_asset/mathscribe/jqmath-etc-0.4.3.min.js'></script>"
            + "</head><body>"
            + "<script>var s =   '$$" + functext + "$$';M.parseMath(s);document.write(s);</script> </body>";
    webView.loadDataWithBaseURL("", js, "text/html", "UTF-8", "");
}

我需要运行一些功能,有人建议我扩展使用 WebViewClient 并运行 OnPageFinished(),我的代码如下(在 OnCreate 下):

webView.setWebViewClient(new WebViewClient() {
        public void onPageFinished(WebView view, String url) {

            code
        }
    });

问题是,在脚本完成更新 web 视图之前调用 OnPageFinished。

有什么方法可以让我在脚本完成更新 web 视图后立即运行代码?或者如何解决 OnPageFinished 的问题?另请注意,我没有在函数中传递任何变量,因为我只有一个 webview。

提前致谢。

【问题讨论】:

    标签: java android android-studio webview jqmath


    【解决方案1】:

    Jqmath - apply after page load

    基本上,在将 jqMath 文本加载到 DOM 元素后,您可以在其中调用 M.parseMath。

    【讨论】:

    • 您能详细说明一下吗?如何将脚本链接解析为 DOM 元素以及如何将其加载到 webview 中?
    • 我真的对android、webview甚至java一无所知。我可以告诉您,您的 M.parseMath(s) 调用是无操作(和错误)。 M.parseMath() 应该传递一个 DOM 节点,而不是字符串。我不知道你在哪里设置functext。设置 s 然后执行 document.write(s) 是没有意义的,只需将 "$$"+functext+"$$" 放入您的 js 变量(实际上是 html 而不是 js)。如果您想稍后创建或更改数学,您只需要调用 M.parseMath(),在创建页面之后,例如响应用户输入。希望这会有所帮助。
    • 看起来我们有一些共同点,我也不太了解 android、java 或 webview ;)。我尝试省略 M.parsemath 并且只使用 document.write(s) 并且没有它它可以正常工作。 “functext”只是一个等式(即:5+54/5)。每次用户编辑方程时都会调用这段代码,以便它会更新并显示到 webview 中……但是该函数有时会超出范围,我需要应用调整大小,我目前有一个蛮横的方法这样做,但我只想弄清楚什么时候是不展示文物的最佳时机
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多