我似乎对 BlackBerry Torch 9800 webkit 浏览器有一个大问题。该浏览器支持 HTML5 和 javascript。在 HTML 5 中为移动设备开发的网页外观在 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 事件再次触发。这适用于与事件相关的所有其他对象。此外,在黑莓上,似乎禁用下拉列表时,可以单击列表以显示列表。
我最终决定使用 jQuery Mobile 版本 1.0 alpha 2 框架。它解决了 BlackBerry 的许多 javascript 和下拉问题,但随后它引入了大量与嵌入式脚本和页面重定向有关的其他问题。所以,我想尝试用 jQuery 或 XUI 交叉触发事件来解决这个问题,以便在 BlackBerry 上使用。非常感谢任何人对此的帮助。