2011-05-24 55 views
7

我試圖做一個使用XMLHttpRequest的長輪詢。它在所有支持的瀏覽器上都能正常工作,但由於某些原因,iPhone上的safari會爲每個ajax調用獲取加載指示符,而對於長時間輪詢,這有點煩人。在長時間投票在iphone上Safari上加載指標

我讀過,你需要等到文檔被加載,但它不縫工作。任何其他已知的黑客解決它?

+0

+1 - 即使您不是長時間輪詢,也很煩人。 – 2012-08-15 05:04:20

+0

可悲的不是 - 我在查看具有服務器發送事件的頁面時也是一樣的。 – theiOSDude 2012-08-15 10:40:16

+0

您是否嘗試使用網絡套接字,f.ex是否與socket.io類似? – David 2012-08-18 20:18:59

回答

1

我有同樣的問題,我嘗試使用簡單的XHRO,隱藏的iFrames等,它只是不適用於iPhone。它似乎沒有更新DOM或做任何事情,直到「整個」文件被加載,在我的例子中是長期民意測驗的持續時間。

我唯一沒試過的是JSONP。也許你可以試試JSONP。

請讓我們知道你是否能夠嘗試JSONP,如果它能夠工作或者有什麼工作的話!

更新:我不知道爲什麼這被標記爲答案,我不認爲這是答案,所以請讓我知道如何使它成爲評論而不是答案。

+0

這是你的問題的答案:)但沒問題,我會盡快嘗試,並在這裏給你一個反饋,所以感謝您的輸入:) – 2012-08-15 18:27:27

+1

我試過JSONP,但這似乎不適合我 - 我甚至沒有把它加載到:/ – 2012-08-18 15:05:00

+2

@Florian「我甚至沒有把它加載到源」,所以你不能運行服務器返回的JS?你能發佈一些你的代碼的簡化版嗎?我知道長時間投票是一個很大的工作,尤其是在safari上工作..我真的很想知道Etherpad和/或谷歌聊天如何工作..我懷疑目前在iPhone上,他們仍然使用短輪詢定期AJAX調用..讓我知道兄弟.. – 2012-08-21 13:51:31

1

我也有同樣的問題。

長時間輪詢(或任何輪詢真的)在所有瀏覽器上工作是一個踢腿。尤其是野生動物園。善良。

socket.io是一個解決方案。

+0

我不能使用這個,因爲我只允許在客戶端開發,所以我只能創建JavaScript,PHP和HTML結構。 – 2012-08-20 14:48:10

+0

在這種情況下,您應該考慮使用jQuery的$ .ajax()函數完成作業而不是XMLHttpRequest。我相信它對多個瀏覽器有更好的兼容性。您使用$ .ajax()在safari中運行一個簡單的測試,然後再構建它。 – khaverim 2012-08-21 03:01:52

+0

那麼我目前正在使用$ .ajax()... ^。^ – 2012-08-21 17:14:20