背景:很久之前我们集成一个功能网页,但需要登录,可是我们的App已经登录,再要求用户登录就不合理,那我们找到登录JS方法,当网页加载完成时,带上用户名和密码执行这个js方法,自动登录的功能实现了,过了很久又需要在页面加载完成时,植入一定功能的js代码。
植入之后,网页调用植入的js方法一直不成功,报错如下:
Cannot read properties of undefined (reading 'getABC')
其实安卓的代码也很简单
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("WebView","访问网页结束");
view.load("window.abc = {getABC(){alert('测试')}}")
}
网页上有个测试按钮,代码也很简单
func testClick() {
window.abc.getABC();
}
我们在webview的初始化时一顿操作,可还是报错,最后发现加载js的时候少了javaScript前缀。
正确加载js方法如下:
view.load("javaScript:window.abc = {getABC(){alert('测试')}}")
郁闷了一两天,真是阴沟里翻船~
网友评论