Moh*_*uag 5 javascript android addeventlistener android-webview kotlin
我正在 Android WebView 上加载以下页面: URL
这是加载页面的概述。
我正在尝试在重置按钮上添加点击侦听器。该按钮没有,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")
Run Code Online (Sandbox Code Playgroud)
GuestBookWebInterface.kt
class GuestBookWebInterface(private val mContext: Context) {
@JavascriptInterface
fun onSubmit(name: String, message: String) {
Log.i("webhook", "Name: $name, message: $message")
}
}
Run Code Online (Sandbox Code Playgroud)
我运行该应用程序,点击“重置”按钮,但在日志中看不到我正在查找的 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" +
" });")
Run Code Online (Sandbox Code Playgroud)
关键是要确保对输入按钮的引用不是undefined。我的假设是有效的,参考文献确实undefined如此。当我现在运行该应用程序时,我可以在控制台上看到以下日志:
webhook:名称:未定义,消息:ED
我的问题是:我在这里缺少什么?我怎样才能触发这个事件监听器?
| 归档时间: |
|
| 查看次数: |
1992 次 |
| 最近记录: |