【发布时间】: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