这是我的Javascript界面:
class WebAppInterface(val context: Context){
@JavascriptInterface
fun provideAString():String{
println("executed from js")
println("this is text")
return "this is text"
}
@JavascriptInterface
fun printTheString(s:String){
println(s)
}
}
我是这样把它添加到WebView的:
webView.addJavascriptInterface(WebAppInterface(this), "Android")
下面是我如何从JS中调用这两个函数:
function StringFromAndroid(){
var string=Android.provideAString();
}
...
...
var currentString=new StringFromAndroid();
Android.printTheString(currentString.string);
打印行如下:
I/System.out: executed from js
I/System.out: this is text
I/System.out: undefined
预期行为:
打印第1行和第2行演示了从JS正确调用provideAString()
。打印行3显示,printTheString(s)
被正确地从JS中调用,但currentString.string
在WebView中的值是"未定义"。预期的行为是,当var currentString=new StringFromAndroid();
通过var string=Android.provideAString();
行强制调用Android.provideAString();
时,该调用将返回字符串"这是文本"。并将var string
设置为该值,因此,currentString.string
将为&;this is text&;而不是"undefined"
将Android.provideAString();
赋值给this
:
function StringFromAndroid() {
this.string = Android.provideAString();
}