请有人更详细地解释什么时候在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
似乎仍然有效。
这是真棒 - 感谢!不知道你可以用哈希做XSS吗? – keldar
我不确定Apple是否有意改变哈希行为来防止XSS。问题是window.location.hash值在iOS 9.0 UIWebView中异步设置,这看起来更像是一个bug(请参阅:https://openradar.appspot.com/22186109),因为在WkWebView中并非如此iOS 9.0 – DaveAlden
感谢您的澄清。我希望他们尽快解决这个可怕的错误! –