jQuery .show()和BlackBerry OS5

时间:2011-07-14 20:33:43

标签: jquery blackberry blackberry-os-v5 css

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

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

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

适用于OS6,iOS,Firefox,Chrome等等......但在OS5浏览器中死机。

哦,我应该补充一下:

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

2 个答案:

答案 0 :(得分: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()通话无法执行操作的原因。要使我们的超链接适用于所有设备,我们会在onclickhref属性中设置JavaScript调用:
    <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的网络开发经验不感兴趣,特别是OS 5和6之间以及轨迹球/拇指垫和触摸设备之间的差异。

答案 1 :(得分:1)

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

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

这让OS5感到高兴。

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

我们也可以在应用程序的其他地方使用.show()而不会出现问题。

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