Jquery BlackBerry Torch 9800 webkit浏览器出现Javascript事件问题

Jquery BlackBerry Torch 9800 webkit浏览器出现Javascript事件问题,jquery,events,blackberry,drop-down-menu,xui,Jquery,Events,Blackberry,Drop Down Menu,Xui,我似乎对BlackBerry Torch 9800 webkit浏览器有一个很大的问题。该浏览器支持HTML5和javascript。在HTML5中为移动设备开发的网页外观与iPhone、Android和Torch的外观相同。但就功能而言,当涉及到因某种原因交叉触发的javascript事件时,火炬真的很糟糕。所有其他支持HTML5的移动浏览器和桌面浏览器似乎都可以正常工作。起初,我认为这是我正在使用的jQueryJavaScript框架。所以,我用XUI切换到了一个更轻的版本,我仍然得到了相同

我似乎对BlackBerry Torch 9800 webkit浏览器有一个很大的问题。该浏览器支持HTML5和javascript。在HTML5中为移动设备开发的网页外观与iPhone、Android和Torch的外观相同。但就功能而言,当涉及到因某种原因交叉触发的javascript事件时,火炬真的很糟糕。所有其他支持HTML5的移动浏览器和桌面浏览器似乎都可以正常工作。起初,我认为这是我正在使用的jQueryJavaScript框架。所以,我用XUI切换到了一个更轻的版本,我仍然得到了相同的事件交叉射击。我的意思是(使用jQuery 1.4.x或jQuery 1.5或XUI 2.0): (下面使用jQuery1.5(用于文档就绪)和XUI对象和事件模型)


...
下拉列表1
选择1 选择2 选择3 选择4
下拉列表2
方案A 方案B 备选案文C 方案D
去 $(文档).ready(函数() {var pageRun=new PageFunctionality(); pageRun.Initialize(); }); 功能页面功能() {this.Option1=x$(“#m#u ddl1”); this.Option2=x$(“m#u ddl2”); this.Button=x$(“m#u goButton”); this.Link=x$(“#m#u Link”); } PageFunctionary.prototype.Initialize=函数() {var me=this; me.Option2.attr(“禁用”、“禁用”); me.Option1.on(“更改”,函数() {me.EnableButton(me.Button,false); me.Option2.attr(“禁用的”); 警报(“DD1变更”); }); me.Option2.on(“更改”,函数() {me.EnableButton(me.Button,true); 警报(“DD2抽头”); }); } PageFunctionary.prototype.EnableButton=函数(objButton,isEnable) {var me=this; 如果(可接受) {x$(对象按钮) .on(“单击”,函数() {me.Option2.attr(“禁用”、“禁用”); me.EnableButton(me.Button,false); 警报(“点击按钮”); }) .removeClass(“禁用”); } 其他的 {x$(对象按钮) .un(“点击”) .addClass(“禁用”); } }
BlackBerry Torch中的代码是,一旦选择了下拉列表1并进行了更改,单击屏幕或按钮上的任意位置将导致再次触发下拉列表事件的onchange事件。这适用于与事件关联的所有其他对象。此外,在黑莓手机上,当下拉列表被禁用时,可以单击列表来显示列表


我最终决定使用jquerymobileversion1.0alpha2框架。它解决了BlackBerry的许多javascript和下拉列表问题,但随后它引入了大量其他问题,包括嵌入式脚本和页面重定向。因此,我想尝试通过在BlackBerry上使用jQuery或XUI的事件交叉触发来解决这个问题。非常感谢大家在这方面的帮助。

您在这里展示的示例是引用XUI框架,而不是jquery mobile。如果您提到firebug/browser consle中出现的错误类型以及您正在运行的BB操作系统,这将更有帮助。您提到了webkit,所以我假设它是BB6,如果不是这样的话,那么您使用的是BB5,它的浏览器在处理jquery mobile的完整JS功能时远远不够,主要是Ajax导航。

对于我测试过的东西,BB os6与XUI的标准版本配合得更好。我以前在OS6上使用过BB版本,发现它有点不可靠

<!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>