2011-08-22 41 views
2

嘗試監視和控制一些投影機,每個投影機都內置了Web服務器。投影機的狀態通過JavaScript動態更新爲頁面。如何使用WebView檢測動態html更新?

我設法檢索HTML和零狀態我正在尋找使用WebView對象的狀態。但是,當狀態發生變化時,我需要刷新自己的價值觀,但似乎無法找到任何可以檢測到這種變化的事件。例如,當我第一次訪問開機/關機狀態時,它顯示爲「未知」,直到 - (void)webView:(WebView *)發送器didFinishLoadForFrame幾秒後纔會更新爲開/關: (WebFrame *)框架事件。

我可以設置一個計時器來輪詢值,但我寧願讓它觸發某種事件(或觀察任何值更改)。有這樣的事件嗎?我看着WebView,WebFrame,但似乎無法找到任何。

或者有沒有辦法觀察一個JavaScript變量?我正在查找的值存儲在JavaScript變量中。

或者也許有其他方法可以做到這一點?

回答

0

如果你不控制JavaScript,我懷疑你可以提出一個響應AJAX調用的事件。我想你必須定期使用NSTimer scheduledTimerWithTimeInterval:尋找變化。例如,爲了獲得varName值運行以下命令:

NSString *value = [webView stringByEvaluatingJavaScriptFromString:@"varName"]; 
+0

找到你真的應該只是輪詢每隔5-10秒的JS變量值的任何適當的活動中,我想這是唯一的辦法。謝謝。 – T1000

+0

這也可以檢查我的HTML中的某些字段? – Legolas

1

如果你能找到那個被解僱的任何JS鉤/ DOM事件時,你的內容的變化,你可以打開一個URL與自定義方案(例如,「刷新: // content「)並執行webView:shouldStartLoadWithRequest:navigationType:,您可以在其中檢查該方案。

如果您無法通過[webView stringByEvaluatingJavaScriptFromString:@"js_variable_name"]

+0

我想這是唯一的辦法,thanx幫助。 – T1000