2

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

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

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

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

哦,我应该补充:

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

4

2 回答 2

1

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

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

这让 OS5 很高兴。

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

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

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

于 2011-07-19T05:02:12.580 回答
1

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

  • 您的呼叫show()可能正在工作,但处理速度太慢以至于您在加载之前就放弃了。 每次您在页面上添加、删除或修改任何属性或元素时,都会处理网页的整个 DOM。BlackBerry 论坛帖子建议在修改元素之前删除元素以提高性能。

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

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

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

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

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

于 2011-07-19T03:11:11.337 回答