为了账号安全,请及时绑定邮箱和手机立即绑定

JS 函数无法识别 JavaScript 接口方法

JS 函数无法识别 JavaScript 接口方法

天涯尽头无女友 2023-09-21 14:01:48
我遇到了以下问题。网页中有一部分:    document.getElementById('continueButton').addEventListener('click', function () {        window.parent.postMessage('PAYLANDS-ERROR', '*');        if (window.parent.HTMLOUT) {            window.parent.HTMLOUT.paylandsFail();        }    });这是我的界面,其中包含带有注释 @JavascriptInterface 的方法:interface IAddCard3dsJavaScript {    @JavascriptInterface    fun paylandsSuccess()    @JavascriptInterface    fun paylandsFail()    companion object {        const val INTERFACE_NAME = "HTMLOUT"    }}有一个类实现了这个接口:class AddCard3dsJavaScript(private val presenter: IAddCard3dsCallback) : IAddCard3dsJavaScript {    override fun paylandsSuccess() {        presenter.onPaylands3dsSuccess()    }    override fun paylandsFail() {        presenter.onPaylands3dsFailed()    }}但是当我运行该应用程序时,我在控制台中看到了这一行Uncaught TypeError: window.parent.HTMLOUT.paylandsFail is not a function:我尝试将接口名称更改为window.parent.HTMLOUT而不是HTMLOUT,在这种情况下,我没有收到错误,但paylandsFail 方法体没有执行。那么,问题是什么以及如何解决呢?UPD这是我如何将此接口添加到 webview 的方法:@SuppressLint("JavascriptInterface")    override fun loadUrlFor3ds(url: String) {        addCardWebView?.apply {            addJavascriptInterface(AddCard3dsJavaScript(getController()), IAddCard3dsJavaScript.INTERFACE_NAME)            loadUrl(url)        }    }
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

通过添加注释@JavascriptInterface来修复AddCard3dsJavaScript-IAddCard3dsJavaScript实现



查看完整回答
反对 回复 2023-09-21
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信