2015-09-17 188 views
1

請有人更詳細地解釋什麼時候在jQuery Mobile中啓用/禁用$.mobile.hashListeningEnabled的功能?hashListeningEnabled - 它究竟做了什麼?

我已經嘗試調試源代碼,但有一些代碼我不完全理解。和文檔是有點抽象(https://api.jquerymobile.com/global-config/):

jQuery Mobile的自動偵聽和處理更改的location.hash。禁用此功能將阻止jQuery Mobile處理哈希更改,這允許您自己處理它們或在文檔中使用滾動到特定標識的簡單深度鏈接。

我之所以問這個問題,是因爲我在iOS 9上遇到了問題,其中包含<select data-native-menu="false">元素。如果這個列表太長,jQuery Mobile會創建一個全屏對話框。

但它顯示後直接關閉。我一直在環顧四周,發現其他人也有同樣的問題:JQuery .popup("open") not working properly on iOS 9 device。建議

一個答案似乎爲我工作確定 - 這是設置hashListeningEnabled爲false:

$(document).on('mobileinit', function() { 
    $.mobile.hashListeningEnabled = false; 
}); 

但我不舒服,直到我明白究竟它將此功能推廣到生產。

$.mobile.changePage似乎仍然有效。

回答

2

您可以在一個html文件中有多個頁面。即使該頁面實際上是另一個包含data-role =「page」的div,也可以轉到「另一個頁面」。 http://demos.jquerymobile.com/1.4.5/pages-multi-page/

所以,如果你使用這種類型的導航,你是擰。 蘋果猜測有人可以使用散列進行XSS攻擊。 /頁的多頁/ #two

彈出窗口使用哈希也:/頁的多頁/ #& UI狀態=對話框

+0

這是真棒 - 感謝!不知道你可以用哈希做XSS嗎? – keldar

+2

我不確定Apple是否有意改變哈希行爲來防止XSS。問題是window.location.hash值在iOS 9.0 UIWebView中異步設置,這看起來更像是一個bug(請參閱:https://openradar.appspot.com/22186109),因爲在WkWebView中並非如此iOS 9.0 – DaveAlden

+0

感謝您的澄清。我希望他們儘快解決這個可怕的錯誤! –