Проблемы с браузером BlackBerry Torch 9800 webkit с событиями Javascript
Кажется, у меня огромная проблема с браузером BlackBerry Torch 9800. Этот браузер поддерживает HTML5 и JavaScript. Внешний вид веб-страницы, разработанной для мобильных устройств в HTML 5, выглядит одинаково для iPhone, Android и Torch. Но с точки зрения функциональности Torch действительно отстой, когда дело доходит до событий javascript, которые по какой-то причине перекрещиваются. Все остальные мобильные браузеры и настольные браузеры, поддерживающие HTML5, работают без проблем. Сначала я подумал, что это javascript-фреймворк jQuery, который я использовал. Итак, я переключился на гораздо более легкую версию с XUI, и я все еще получаю ту же перекрестную обработку событий. Вот что я имею в виду (используя jQuery 1.4.x или jQuery 1.5 или XUI 2.0): (далее используются как jQuery 1.5 (для документов готов), так и объекты XUI и модели событий)
<!DOCTYPE html>
<html>
<head runat="server">
<meta charset="utf-8">
<meta name=”HandheldFriendly” content=”true” />
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="viewport" content="user-scalable=no, width=device-width" />
...
<script type="text/javascript" src="../Scripts/jquery-1.5.min.js"></script>
<script type="text/javascript" src="../Scripts/xui-bb-2.0.0.min.js"></script>
</head>
<body>
<form ... >
<div style="width: 100%;">
<label>Dropdown List 1</label><br />
<select id="m_ddl1" style="width: 100%;">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
</div>
<br />
<div style="width: 100%;">
<label>Dropdown List 2</label><br />
<select id="m_ddl2" style="width: 100%;">
<option value="a">Option A</option>
<option value="b">Option B</option>
<option value="c">Option C</option>
<option value="d">Option D</option>
</select>
</div>
<br />
<asp:LinkButton runat="server" id="m_goButton" CssClass="button disabled" Enabled="false" ClientIDMode="Static">Go</asp:LinkButton>
<script type="text/javascript">
$(document).ready(function()
{ var pageRun = new PageFunctionality();
pageRun.Initialize();
});
function PageFunctionality()
{ this.Option1 = x$("#m_ddl1");
this.Option2 = x$("#m_ddl2");
this.Button = x$("#m_goButton");
this.Link = x$("#m_link");
}
PageFunctionality.prototype.Initialize = function()
{ var me = this;
me.Option2.attr("disabled", "disabled");
me.Option1.on("change", function()
{ me.EnableButton(me.Button, false);
me.Option2.attr("disabled", "");
alert("DD1 Changed");
});
me.Option2.on("change", function()
{ me.EnableButton(me.Button, true);
alert("DD2 Tapped");
});
}
PageFunctionality.prototype.EnableButton = function(objButton, isEnable)
{ var me = this;
if(isEnable)
{ x$(objButton)
.on("click", function()
{ me.Option2.attr("disabled", "disabled");
me.EnableButton(me.Button, false);
alert("Button Tapped");
})
.removeClass("disabled");
}
else
{ x$(objButton)
.un("click")
.addClass("disabled");
}
}
</script>
</form>
</body>
</html>
Что происходит с этим кодом в BlackBerry Torch, так это то, что после выбора выпадающего списка 1 и внесения изменений щелчок в любом месте экрана или кнопки приведет к повторному запуску события onchange события выпадающего списка. Это относится ко всем остальным объектам, с которыми связаны события. Кроме того, на BlackBerry кажется, что, когда раскрывающийся список отключен, его можно щелкнуть, чтобы отобразить список.
В конце концов я решил использовать jQuery Mobile версии 1.0 alpha 2. Он решает многие проблемы с javascript и выпадающими списками для BlackBerry, но затем он представил массу других проблем со встроенными скриптами и перенаправлениями страниц. Итак, я хотел бы попытаться решить эту проблему с помощью перекрестного запуска событий с помощью jQuery или XUI для использования на BlackBerry. Очень ценю чью-либо помощь в этом.
2 ответа
BB os6 лучше работает со стандартной версией XUI для вещей, на которых я тестировал. Я использовал версию BB ранее на OS6 и нашел ее немного ненадежной.
Пример, который вы показываете здесь, ссылается на среду XUI, а не на jquery-mobile. Было бы более полезно, если бы вы упомянули, какой тип ошибки вы получаете в вашем браузере Firebug/ браузера и какую ОС BB вы используете. Вы упомянули webkit, так что я предполагаю, что это BB6, если это не так, то вы используете BB5, браузер которого гораздо менее адекватен, когда дело доходит до полноценной JS-функциональности jquery-mobile, в основном Ajax Navigation.