javascript - HTML 输入上的 addEventListener 在 Android WebView 中不起作用
问题描述
我正在 Android WebView 上加载以下页面: URL
这是加载页面的概述。
我正在尝试在RESET按钮上添加一个点击监听器。这个按钮没有id
,但有一个name='resetbutton'
,所以我尝试使用 来获取它的引用document.getElementsByName('resetbutton')[0]
,正如您在上面的屏幕截图中看到的那样,它应该可以工作。
问题是,当我将事件侦听器附加到输入时,它不会触发。这是我的客户代码:
mWebview.settings.apply {
javaScriptEnabled = true
domStorageEnabled = true
}
WebView.setWebContentsDebuggingEnabled(true)
mWebview.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
mWebview.evaluateJavascript("javascript:document.getElementsByName('resetbutton')[0].addEventListener('click', function() {\n" +
" Android.onSubmit('CLICK', 'ED');});") {
Toast.makeText(this@GuestBookActivity, "Got $it", Toast.LENGTH_LONG).show()
}
}
}
mWebview.addJavascriptInterface(GuestBookWebInterface(this), "Android")
mWebview.loadUrl("http://users4.smartgb.com/g/g.php?a=s&i=g44-71854-e8")
GuestBookWebInterface.kt
class GuestBookWebInterface(private val mContext: Context) {
@JavascriptInterface
fun onSubmit(name: String, message: String) {
Log.i("webhook", "Name: $name, message: $message")
}
}
我运行应用程序,点击了 RESET 按钮,但在我正在寻找的日志中看不到 webhook 条目。我尝试在页面主体上进行简单的可见更改(例如更改其背景颜色)并且它起作用了。
我想也许由于某种原因没有附加事件侦听器。所以接下来我尝试了这个:
mWebview.evaluateJavascript("javascript:Android.onSubmit(document.getElementsByName('resetbutton')[0], 'ED');\n" +
" document.getElementsByName('resetbutton')[0].addEventListener('click', function() {\n" +
" Android.onSubmit('CLICK', 'ED');\n" +
" });")
关键是要确保对输入按钮的引用不是undefined
. 我的假设是有效的,参考确实undefined
存在。当我现在运行应用程序时,我可以在控制台上看到这个日志:
webhook:名称:未定义,消息:ED
我的问题是:我在这里缺少什么?我怎样才能让这个事件监听器触发?
解决方案
推荐阅读
- java - Android Java找不到局部变量
- linux - 如何在bash中更改文件名的一部分?
- javascript - Ajax 请求未从服务器返回答案
- php - 为什么我的会话数组不能正确读出?
- python - (Python selenium)通过 Steam 的年龄检查
- python - 是否有任何首选的 Python 包来创建 lis 类型的文件(由 SQR 生成的输出文件)
- javascript - 如何从反应js中的api访问对象数组?
- openscenegraph - OSGB - 每个文件的瓦片数
- flutter - FormBuilderDateTimePicker 主题属性不起作用
- python - 有没有一种万无一失的方法来匹配两个相似的字符串序列?