尝试监视和控制一些投影仪,每个投影仪都内置一个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/