2011-04-19 69 views
0

我正在開發一個jQuery手機網站(jQM)。這很棒,但有一件事讓我感到困擾。jQuery mobile:在不支持的瀏覽器中優雅地降級?

jQM is not supported in all mobile browsers(特別是BlackBerry 5)。該網站看起來華麗的Android瀏覽器:在Android上的Opera Mini,它實際上已經損壞:(

我開發的網站使用漸進增強,很自然,所以它沒有jQM的作品 - 如果我可以告訴瀏覽器不要用它

問:對於像的Opera Mini在Android平臺上,是有辦法,我可以檢查JQM的支持,而且完全不應用JQM適當

  • 如果JQM在這個瀏覽器中,使用支持?它
  • 如果不是,請不要加載jQM javascript,不要加載jQM樣式表s,並使用基本的JavaScript網站。

我瞭解屬性,但你大概需要加載JQM使用它:

$.mobile.gradeA() 

謝謝!

回答

0

jQuery Mobile本身測試瀏覽器功能。

您應該自定義代碼以使其不再執行增強功能。 如果你有興趣試試這裏:https://github.com/jquery/jquery-mobile/blob/master/js/jquery.mobile.support.js

另外:如果它決定工作 - 它可能應該。儘量固定問題,而不是試圖讓jQuery Mobile的降解

[編輯]

確定。讓我解釋。 JQM遵循逐步增強的思想,測試瀏覽器功能並在瀏覽器通過測試時使用它的小部件和內容。這就是爲什麼我說它應該工作,如果它嘗試。

如果它試圖增強和失敗 - 這是JQM方面的缺陷/缺失支持,並且在理想的世界中,您應該期望它得到修復。現實表明你不能指望它,但你可以期待它;)這還不是一個發佈。

我試着用「嘗試修復......」的方法是下載JQM存儲庫,在支持測試中添加一行或兩行,並讓它們檢測導致JQM在特定情況下失敗的功能。然後運行make,你有一個全新的JMQ爲你工作。

之後,你可以建議你的核心團隊的變化,他們會改善。

[編輯]

其實,這是你真正想要的:

一個很好的方式得到你的支持探測代碼。

您可以實現自己的gradeA函數將返回 $.support.mediaquery&&yourcondition

參見:http://jquerymobile.com/demos/1.0a4.1/#docs/api/globalconfig.html

這可以防止JQM從您不希望瀏覽器中工作。

+0

「如果它決定工作 - 它可能應該」< - 不確定這是什麼意思? – simon 2011-04-19 13:43:25

+0

我對這個回覆很感興趣,但是恐怕我無法弄清楚你的意思。我的代碼本身並不是問題 - jQuery Mobile演示本身不適用於例如Android上的Opera Mini 6。 – simon 2011-04-19 18:17:35

+0

我決定把答案放在一個可讀性編輯 – naugtur 2011-04-20 08:02:13

0

如何使用jquery support對象?有移動的new properties。從文檔中,gradeA$.support.mediaquery的快捷方式。

+0

啊,先加載jQuery,然後使用'.gradeA'來有條件加載jQM?狡猾!這確實假設所有瀏覽器都支持jQuery,儘管... – simon 2011-04-19 11:29:50

+0

@simon,是的,這就是我的建議。我相信,jquery將支持現代移動瀏覽器,支持java腳本。是的,有可能jQuery API的某些部分可能不被支持,但所有的核心功能,如瀏覽器檢測,事件,選擇器應該工作! – VinayC 2011-04-19 11:38:27

+0

聽起來不錯,謝謝。 – simon 2011-04-19 11:47:46

相關問題