【问题标题】:jQuery .show() and BlackBerry OS5jQuery .show() 和 BlackBerry OS5
【发布时间】:2011-07-14 20:33:43
【问题描述】:

这可能是一个很长的镜头,但是......

有人在 BlackBerry OS5 网络浏览器中使用 jQuery 的 show() 时遇到问题,导致它无法工作(在设备上)或导致手机崩溃(模拟器)?如果有声音,找到解决方法了吗?

无论我们使用 .show() 还是 .css('display','block') 都会发生同样的事情

适用于 OS6、iOS、Firefox、Chrome 等……但在 OS5 浏览器中失效。

哦,我应该补充一下:

据我们所知,这只是在运行我们的实际服务器(JSF、websphere)的应用程序时出现的问题。当我们在本地测试 jQuery 作为静态页面时,它工作正常。

【问题讨论】:

    标签: jquery blackberry blackberry-os-v5 css


    【解决方案1】:

    我的工作团队也在使用 jQuery Mobile,并且在设备上遇到了类似的问题(尽管我认为我们没有看到由此导致的模拟器崩溃)。以下是我们目前发现的:

    • 您对show() 的调用可能有效,但处理速度太慢,以至于您在加载之前就放弃了。 The entire DOM for the web page is processed every time you add, remove, or modify any attribute or element on the page。 BlackBerry 论坛帖子建议 removing an element before modifying 以提高性能。

    • 在某些设备上,我们发现调用 show() 可以工作,但 UI 仅在页面上向上或向下滚动一点后才会更新。如果您的页面太短而无法滚动,您可能会不走运。

    • onclick 属性在触摸屏上似乎被忽略(但在轨迹球/触摸板设备上工作正常),这可能是您的 show() 调用没有任何操作的原因。为了让我们的超链接在所有设备上都能正常工作,我们将 JavaScript 调用放在 onclickhref 属性中:
      <a href="javascript:showThings();" onclick="javascript:showThings();">Show</a>

    • 当从 onclick 方法调用 JavaScript 时,我们必须在方法调用前面加上 javascript:,如下所示:
      <a href="#" onclick="javascript:showThings();">Show</a>
      (大多数现代浏览器都假定您的 onclick 值应该被评估为 JavaScript)

    • 默认情况下未启用基于焦点的导航,这导致我们在使用轨迹球/拇指板设备时出现问题(屏幕会锁定并停止响应按键)。您可以启用基于焦点的导航in either your project's config.xml 或使用RIM-specific hyperlink attribute。我忘记了在config.xml 中启用此功能后遇到了什么问题,但我们最终改用了x-blackberry-initialFocus 超链接属性。

    很难准确地说出上述哪一点可能适用于您的情况,希望有一些相关或有用的东西。到目前为止,我的团队对 BlackBerry 的 Web 开发体验不甚满意,尤其是 OS 5 和 6 之间的差异,以及轨迹球/拇指板和触控设备之间的差异。

    【讨论】:

    • 我也没有提到页面加载速度有多慢,以及在检索新页面内容后,大部分页面似乎与处理(我们假设为 JavaScript)相关。我们最终将我们的大部分移动 Web 应用程序合并到一个带有单一 JavaScript 文件的页面中。每个“页面”实际上是一个隐藏的 DIV。我想这并不完全相关,但可能会导致本地测试和服务器测试之间出现差异。
    • 感谢您的回答。毫无疑问,BB OS5 有一个令人难以置信的糟糕网络浏览器。我实际上找到了解决方法。将其作为答案发布。
    【解决方案2】:

    我们发现的问题是 OS5 的浏览器在将显示属性从 BLOCK 更改为 NONE 时更新 DOM 时出现问题。一位黑莓代表甚至告诉我们,应该避免在 OS5 中更新 DOM(啊!)。

    因此,我们最终采用的解决方案是不使用.show().hide(),而是切换了一个类名。除了 OS5 之外的所有设备都会有类名来切换显示属性,但是 OS5 会将高度从 auto 切换到 0px

    这让 OS5 很开心。

    说了这么多,这仍然不能解释一些变量......例如我们可以将代码作为静态页面在本地运行并在模拟器中运行它就好了。但是如果我们尝试从服务器加载页面,完全相同的代码会崩溃。

    我们也可以毫无问题地在应用程序的其他地方使用 .show()。

    最后,我相信,如果某些子元素的display 被切换,则将某些特定的 CSS 组合应用于父元素会杀死浏览器。

    【讨论】:

    • 我面临同样的问题...切换类名是什么意思(通过使用 .toggleClass ?)
    • 对不起,我应该更清楚。我的意思是使用.addclass.removeclass 来打开和关闭课程。该类本身是为 OS5 设置的,以更改高度而不是显示属性。
    • 嘿伙计...它的工作:) +1 ...兄弟姐妹()也不起作用...你有替代品吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 2013-02-25
    相关资源
    最近更新 更多