objective-c - 如何使用WebView检测动态html更新?

标签 objective-c cocoa webview

尝试监视和控制一些投影仪,每个投影仪都内置一个Web服务器。投影仪的状态通过javascript动态更新到页面。

我设法使用 WebView 对象检索 html 并将我正在寻找的状态归零。但是,当状态更改时,我需要刷新我的值,但我似乎找不到任何可以检测此类更改的事件。

例如,当我第一次访问电源开/关状态时,它显示为未知,并且直到 - (void)webView:(WebView *)sender didFinishLoadForFrame:( WebFrame *)frame 事件。

我可以设置一个计时器来轮询值,但我更希望通过某种事件触发它(或观察任何值变化)。有这样的事件吗?我查看了 WebView、WebFrame,但似乎找不到任何内容。

或者有没有办法观察 javascript 变量?我正在查找的值存储在 JavaScript 变量中。

或者也许还有其他方法可以做到这一点?

最佳答案

如果您可以找到在内容更改时触发的任何 JS Hook /dom 事件,您可以从 JS 打开具有自定义方案(例如“refresh://content”)的 URL 并实现 webView:shouldStartLoadWithRequest :navigationType:,您可以在其中检查方案。

如果您找不到任何合适的事件,您实际上应该通过 [webView stringByEvaluatingJavaScriptFromString:@"js_variable_name"] 每 5-10 秒轮询一次 JS 变量值

关于objective-c - 如何使用WebView检测动态html更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7143444/

相关文章:

iphone - 初始化不同对象的最佳方式

javascript - 有没有办法在 Android 应用程序的 webview 中获取 HTML?

javascript - JavaFX WebView 不加载 jar 中的上层文件夹脚本

ios - 如何在 iOS 10 通知中获取应用程序状态?

ios - 通知 APNS 关于角标(Badge)计数

java - 如何将 NSDate 转换为整数以将 PHP date() 作为 unix 时间戳传递?

swift - Swift 3 中与 Cocoa 的线程间对象通信

objective-c - 我需要使用 NSTimer 从陀螺仪 iOS 获取数据吗?

objective-c - 暂时禁用热角和停靠屏幕切换

android - 文件上传字段在 Android 的 Web View 中不起作用