我们正在尝试在我们的 Android 应用程序的 WebView 中加载一个 React 网站。一个现有的答案说尝试加载反应网站 https://ahfarmer.github.io/calculator/ 作为检查 WebView 是否正确配置的良好开端。 当我们在 WebView 中加载这个网站时,我们得到这个错误,
index.js:10 Uncaught TypeError: Cannot read property 'hasOwnProperty' of undefined
at Object.<anonymous> (index.js:10)
at t (bootstrap 0d2f05a4c57a0e5e8e16:19)
...
正如大多数答案所暗示的那样,我们在 WebView 设置中启用了 DOM 存储和 JS。 代码是用 Kotlin 编写的。此函数加载 webview 中传递的 url。
@SuppressLint("SetJavaScriptEnabled")
private fun loadUrl() {
if (0 != applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE) {
WebView.setWebContentsDebuggingEnabled(true)
}
webView.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(view: WebView, progress: Int) {
if (progress == 100)
this@MainActivity.progressBar.visibility = View.GONE
}
}
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
view.loadUrl(url)
return true
}
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
webView.loadUrl("javascript:callFromAndroid('$data')")
}
}
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true
val appInterface = AppInterface(this)
webView.addJavascriptInterface(appInterface, "Object")
webView.loadUrl(url)
}
该网站是用 create-react-app 构建的,在浏览器中加载得很好,但是当加载到 Webview 中时,构建 React 应用程序时生成的块文件会出错。
<块引用>在 webView 中加载时,我们在自己的 React 应用程序的块文件中面临相同的错误和更多错误。在浏览器中完美运行。
是使用 create-react-app 构建的问题还是我们在 WebView 代码中遗漏了什么?
需要帮助!!!