一开始以为是移动端中注入的方法 和 js方法名不对。经排查,是一致的。
然后排查 注入方法(通过 - (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError * _Nullable error))completionHandler注入)也没有任何问题。
后来发现前端是使用的vue框架,而直接将js方法写在 methods 中,这样造成这个交互js方法是局部的,无法被ios端找到。
解决办法:将iOS需要调用的js方法在 created 和 mounted 方法中暴露在window下,变成全局方法。
window.printText = this.printText()
如果到这里还不行或者有崩溃,请在 window.onload 方法下进行声明
HTML、JS、CSS的Web三件套,时下占据了项目的主要业务部分,原生和JS的交互必不可少,下面总结iOS调试Webview的两种方法: 1.在手机设置里,找到Safair浏览器,在高级里启用Web检查器; 2.Mac上Safair浏览器,在偏好设置高级选项底部勾选“在菜单栏中显示开发菜单”; 3.手机连接Xcode工程,操作App跳转到JS页面,点击Mac上的Safair浏览器,在开发选项下拉菜单中,找到手机名称对应的html页面即可进入调试器; ( 参考链接 ) 1.使用brew安装 ios-webkit-debug-proxy brew install ios-webkit-debug-proxy若上面的命令不有效,尝试下面的命令安装brew uninstall --force libimobiledevice ios-webkit-debug-proxy brew install --HEAD libimobiledevice ios-webkit-debug-proxy2.安装成功后,在终端输入下面的命令ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html若有问题,报错Could not connect to lockdownd. Exiting.: Permission denied,可输入下面的命令,再次尝试sudo chmod -R 777 /var/db/lockdown/3.保持终端命令连接状态,在chrome浏览器中打开 localhost:9221 ,点击真机选项; 4.操作App跳转到JS页面,下面两种方式均可进入调试器: (1)在Mac的chrome中刷新页面,选中要打开的html连接,右键点击“复制链接地址”,新建标签页,在地址栏粘贴地址,按enter键进入; (2)直接在谷歌浏览器地址栏中输入 chrome://inspect/#devices ,点击Target下方的inspect进入; 备注: (1)手机上也要安装谷歌浏览器,否则终端可能无法连接到真机; (2)复制JS页面地址时,不要用cmd+c快捷键,要右键单击“复制链接地址”,然后新建标签页,粘贴地址打开; 总结: 两种浏览器相比较,虽然Safair调试器打开方便,但容易卡住,有时无法查看JS的变量值,甚至打断点会闪退,建议使用Google Chrome浏览器调试方法。是的,iOS的应用程序无法捕获JavaScript异常信息。要解决这个问题,您可以使用JavaScript的try/catch语句来捕获异常,并将异常信息发送到服务器,以便进行调试。此外,您还可以使用第三方库,如Crashlytics,来捕获和跟踪JavaScript异常。