我遇到了以下问题。网页中有一部分: 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
实现
添加回答
举报
0/150
提交
取消