3

我似乎对 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 上使用。非常感谢任何人对此的帮助。

4

2 回答 2

0

您在此处显示的示例是引用 XUI 框架而不是 jquery-mobile。如果您提及您在萤火虫/浏览器控制台中遇到的错误类型以及您正在运行的 BB OS 是什么,将会更有帮助。您提到了 webkit,所以我假设它是 BB6,如果不是这样,那么您使用的是 BB5,它的浏览器在处理 jquery-mobile 的完整 JS 功能(主要是 Ajax Navigation)方面远远不够。

于 2012-02-13T18:49:40.520 回答
0

对于我测试过的东西,BB os6 与标准版 XUI 搭配起来效果更好。之前在OS6上用过BB版,觉得有点不靠谱。

于 2012-04-27T15:40:35.277 回答