我遇到了以下问题。网页中有一部分:
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)
}
}
一只名叫tom的猫
相关分类