ios - 从 lldb 调用 WKWebView 上的方法
问题描述
当我调试我的应用程序以查找为什么 webview 没有收到我的消息时,我发现另一个 WkWebview(我们称之为 B)是在我现有的 webview (A) 之上创建的。因为我只引用了 A,所以我试图使用它的内存地址直接在 B 上评估 js。在 lldb 中这样做的正确方法是什么?
基于这个答案,我试过:
settings set target.language swift
e -- import WKWebview
e -- let $webView = unsafeBitCast(0x13299e400, to:WKWebview.self)
为了调用 webView.evaluateJavaScript,但 lldb 说:
let $webView = unsafeBitCast(0x13299e400, to:WKWebview.self)
^
error: <EXPR>:3:46: error: cannot convert value of type 'module<WKWebview>' to expected argument type 'U.Type'
let $webView = unsafeBitCast(0x13299e400, to:WKWebview.self)```
解决方案
感谢@Kamil.SI 设法做到了。完整的步骤是:
(lldb) e @import <WKWebview.h>
(lldb) e NSString *$js = <my javascript to evaluate>
(lldb) e (void)[(id)0x10504ea00 evaluateJavaScript:$js completionHandler:nil]
推荐阅读
- python - 将 curl 响应读入变量/对象
- notifications - Liferay 6.2 - 主键不存在 UserNotificationEvent?
- c# - DataGridViewComboBoxCell ComboBox 不出现
- ms-access - 如何更改 MS Access 2016 中的默认数据表字体?
- powershell - 服务器上本地管理员组中的 Active Directory 组 - 访问被拒绝
- c++ - main.exe 已停止在代码块中工作
- html - 如何重新设计两个按钮
- python - Python函数可以在外面修改列表或字典,但不能修改字符串
- docker - 清除后 Docker 仍然显示版本
- json - FullCalendar 不显示数据