【问题标题】:Android: Calling javascript from WebViewAndroid:从 WebView 调用 javascript
【发布时间】:2013-01-04 14:45:41
【问题描述】:

我们正在编写适用于 Android 的应用程序。这是一个包含 Html5 页面的WebView。我们使用loadUrl()webview的方法,为了将一些原生OS变量推送到html,比如:

webview.loadUrl("javascript:myJavascriptFunc('" + myAndroidOSVar + "');");

它工作得很好。但是,如果我们在调用 loadUrl() 时从页面输入内容,我们会失去输入字段的焦点,即使调用的 javascript 函数只是更改了缓存上的标志。

你知道从WebView而不是loadUrl()调用Javascript函数的其他方法吗?

【问题讨论】:

    标签: javascript android android-webview


    【解决方案1】:

    这是避免该问题的最接近方法:WebView hides soft keyboard during loadUrl(), which means a keyboard cannot stay open while calling javascript

    基本上,您可以通过在本机端排队命令并每隔一段时间让 JS 桥获取命令并使用 JS eval() 或其他方式执行来避免 loadUrl 调用。

    【讨论】:

      【解决方案2】:

      如果您在 web 视图中有多个字段,我不确定它会如何响应,但我想出了一个解决方法来保持键盘显示:https://stackoverflow.com/a/18776064/513038。可能值得一试。

      【讨论】:

        【解决方案3】:

        是的,有一种方法可以将 JavaScriptInterface 添加到您的 WebView 中,请参阅 this tutorial 以获取更多说明和详细信息

        【讨论】:

        • 我们已经使用了 javascriptInterfaces,但是对于这种特殊情况,我们需要从 webview 端触发函数(在我们的示例中是一个 android 计时器)。我们需要的是除了 webview.loadUrl() 之外的其他方法,它不会与 UI 混淆,导致 loadUrl() 将焦点设置为 webview。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-15
        • 2012-05-10
        • 1970-01-01
        • 2016-05-07
        • 2016-09-14
        • 2019-05-31
        • 2015-07-09
        相关资源
        最近更新 更多