android调用JS失败时可能的原因

1 篇文章 0 订阅
1 篇文章 0 订阅

做支付宝支付完成后,客户端需要调用JS,通知前端支付完成或者失败,更新前端的界面等。

一般来说,只需要调用下面一句话就可以调用JS中alipayCallBack()方法。

String payResult = "success";
webView.loadUrl("javascript:alipayCallBack(" + payResult + ")");

但是在功能实现的时候失败了。web报这个错误:

web console uncaught referenceerror: success is not defined at null:1

意思就是web认为success是一个变量名,而不是一个变量值。查了一下,发现JS定义String变量的时候用单引号,而JAVA是使用双引号。

因此把代码改成

String payResult = "success";
webView.loadUrl("javascript:alipayCallBack('" + payResult + "')");

通过添加单引号,JS就知道success是变量值而不是变量名字了。在调用含参数的JS方法时容易出现这个问题。

如果是不含参数的JS方法,则直接写就好。例如下面,就直接调用了alipayCasllBack()方法。

webView.loadUrl("javascript:alipayCallBack()");

android调用JS方法注意两个编程方法中变量表示的不同。


还有其他4中情况,也可能会导致JS调用失败,一并总结如下:

1. webView.getSettings().setJavaScriptEnable(true); 设置webView支持JavaScript

2. webView.addJavascriptInterface(new JSCallBack(), "JSCallBack"); 绑定一个java对象webView,就是把一个Java对象和网页JS相关联。

3. 在JSCallBack类中,增加@JavascriptInterface注解,导入android.webkit.JavascriptInterface;

4. 检查ManiFeast,将android:targetSdkVersion改成17及一下。<其实我自己的工程就是17,但是没有影响>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值