2009-11-02 144 views
1

我正在構建一個移動web應用程序,它可能依靠ajax,也可能不依賴於ajax,具體取決於用戶的瀏覽器是否支持javascript。由於我使用的是JQuery,因此在啓用AJAX功能之前,我想確保移動瀏覽器通過JQuery支持AJAX。在移動瀏覽器中測試AJAX

由於Opera呈現頁面的方式,Opera Mini遇到了一個問題,我不知道如何檢查它。下面是我使用來測試AJAX代碼:

$(document).ready(function() { 
    $.get(
     'test.txt', 
     function() { 
      init_ajax(); 
     } 
    ); 
}); 

凡init_ajax()使我的Ajax功能和禁用我的靜態功能。

問題是,Opera Mini在將頁面輸出到瀏覽器之前成功運行此代碼,但是然後ajax實際上並不在渲染頁面上工作。我試着在setTimeout而不是document.ready中運行這個函數,但遇到了同樣的問題。

有沒有一種通用的方法來準確測試移動瀏覽器中AJAX的存在?

P.S.如果你想測試在Opera Mini的解決方案,這裏有一個全功能仿真器:

http://www.opera.com/mini/demo/

[編輯]我應該指出,這個應用程序需要使用的setInterval進行Ajax調用大約每分鐘一次,所以即使Opera Mini在被onclick觸發時也支持一些ajax,但我不認爲有任何方法可以讓它支持以特定間隔進行的ajax調用。如果我們可以測試這個,那可能會解決上述問題。

+0

你並不是真的在問移動瀏覽器是否支持Ajax,而是移動瀏覽器是否支持通過jquery支持AJAX。巨大差距。 – 2009-11-02 22:09:23

回答

0

不Opera Mini在Opera的服務器上檢索Web請求會呈現頁面,然後以減少的功能將輸出(以圖像和文本的形式)傳遞到目標?由於在Opera Mini服務器場中發生渲染,因此客戶端和Web服務器之間沒有真正的來回通信,因此實際上無法執行ajax。

您可能需要另一種執行Opera Mini檢查的方法,查看「Opera Mini/1.2」的用戶代理將是理想的。至於執行移動瀏覽器的檢查,它取決於移動瀏覽器提供的功能的範圍。有時候你無法檢查,並且不得不通過名稱提取特定的移動瀏覽器。

更多的信息在這裏Designing With Opera Mini in Mind

+0

我認爲你是對的。據我所知,Opera Mini執行腳本約2秒鐘,然後停止並傳遞頁面。因此,大約2秒鐘頁面功能完全正常,這意味着在此期間發生的任何測試都會導致錯誤的結果。 – Travis 2009-11-03 00:32:03

+0

Opera mini服務器執行腳本並執行請求,然後將其傳送給移動客戶端。所以在這種情況下,唯一的選擇是直接通過用戶代理識別並禁用ajax功能。 – skirmish 2009-11-05 21:35:42