BlackBerry Torch 9800 Webkit ブラウザに大きな問題があるようです。そのブラウザは HTML5 と JavaScript をサポートしています。HTML 5 でモバイル デバイス用に開発された Web ページの外観は、iPhone、Android、および Torch で同じように見えます。しかし、機能的には、なんらかの理由でクロスファイアする JavaScript イベントに関しては、Torch は本当にひどいものです。HTML5 をサポートする他のすべてのモバイル ブラウザーおよびデスクトップ ブラウザーは、問題なく動作するようです。最初は、私が使っていた jQuery JavaScript フレームワークだと思いました。そのため、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 フレームワークを使用することにしました。これにより、BlackBerry の JavaScript とドロップダウンの問題の多くが解決されますが、埋め込みスクリプトとページ リダイレクトに関する他の多くの問題が発生します。そこで、BlackBerry で使用する jQuery または XUI とのイベントのクロスファイアでこの問題を解決したいと思います。これに関する誰かの助けに感謝します。