【问题标题】:why WebView.loadUrl("javascript: someFunction()") don't work with local html files?为什么 WebView.loadUrl("javascript: someFunction()") 不适用于本地 html 文件?
【发布时间】:2013-08-01 17:53:36
【问题描述】:

我正在使用 android 的 WebView.loadUrl() 方法从 SD 卡加载 HTML 文件。 此 html 文件包含 JavaScript 函数,例如 someFunction()

出于某种我仍然不明白的原因,调用mWebView.loadUrl("javascript:someFunction()"); 不会“触发”HTML 文件中的函数。 (我在 html 加载完成后调用它...)

当我从 远程服务器 加载到 web 视图 相同的 HTML 文件,并从 webView 启动相同的 javascript 调用时 - 它确实有效! 所以我知道问题在于我是从本地文件加载它,而不是我的 html 文件中的错误。

我知道需要启用 javascript:

    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);

没用!

我还注意到WebViewClient.onLoadResource() 回调也存在同样的问题。当文件是本地文件而不是来自远程服务器(或者准确地说是从 HTTP Web 服务器的 uri 访问)时,似乎我对 javascript 有一般问题。

有什么建议为什么会发生,我需要做些什么才能让它发挥作用?

TIA

【问题讨论】:

  • @CommonsWare:从资产加载不是我的应用程序的选项,但无论如何我在开发的某个阶段也尝试过它 - 它也不起作用。我相信您的示例有效,所以我想我的 java 代码/ html 文件与您的有什么区别。虽然我的 html 文件是一个播放器,它带有附加的 swf 文件,但两者似乎都是一样的,它是使用用于 power point 演示的清晰导出插件创建的。我添加到控制幻灯片切换的 html 中的 javascript 函数。有什么不同吗?
  • 我从未尝试在 Android 上嵌入 SWF,所以我不知道它是否会出现问题 -- 抱歉!
  • @Subra:someFunction(data) 必须是有效的 JavaScript 源代码。
  • @Subra: 是的,只要它是 JavaScript 源代码中的文字形式。

标签: javascript android html android-webview


【解决方案1】:

这似乎是我的错误。即使 html 文件位于 SD 上,java 脚本功能也能正常工作。是我使用的那个特定功能根本没有像预期的那样工作。

【讨论】:

    【解决方案2】:

    mWebView.loadUrl("javascript:someFunction();"); 怎么样? ? 用“;”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 2019-09-27
      • 2015-11-06
      • 1970-01-01
      • 2020-05-22
      相关资源
      最近更新 更多