【发布时间】:2012-06-28 16:12:37
【问题描述】:
我在黑莓os7浏览器上尝试了以下代码:
<html>
<body>
test page
<script>
i = 0;
if(i < -2147483647) {
alert("very low")
}
if(i < -2147483648) {
alert("very very low")
}
if(i < -2147483649) {
alert("very very very low")
}
</script></body></html>
而且令人惊讶的是它的结果非常低!
我认为 javascript 中的整数应该支持的不止这些。当然,这段代码在其他浏览器上也能正常运行...
棘手的是,我发现尝试在黑莓上运行 gwt 应用程序。它在 OS6 上运行良好,但在 OS7 上却不行。我调试了由 GWT 编译的代码,碰巧 Integer.parseInt 的 javascript 实现使用 int 的极高和极低进行了测试。由于 OS7 浏览器似乎不能正确支持这些极端值(位溢出?)我得到一个异常并且我的应用程序没有启动......
我正在为此寻找解决方案。我正在考虑为黑莓重写 GWT integer.parseInt 实现。你怎么看?还有其他想法吗?
【问题讨论】:
-
也许重新绑定将是一个优雅的解决方案,也许使用自己的属性提供者 - os7 使用的浏览器排列是什么?
-
这实际上是一个基于 webkit 的浏览器,所以我猜它是 safari 排列。我们正在考虑在 GWT 中重新绑定 integer.parseInt() 方法,但我们还没有找到方法。重新绑定是一个优雅的解决方法,这是肯定的。如果我们发现了什么,我会发布解决方案。
-
啊,正常的重新绑定不起作用,因为您不能扩展 Integer 并且 parseInt 是静态的,对吗?会有另一种解决方案:gwt 超级采购。但是,这将需要您实现整数的所有函数和字段。如果你想序列化它(例如在异步调用中),它会变得更加复杂。并且仍然不可能重新绑定,因此所有排列都使用新类。如果需要,我很乐意为您提供更多相关信息,但这确实是最后一线希望。
-
目前我们找到的解决方案实际上是避免使用 integer.parseInt。从长远来看,这种解决方案是不可接受的,但它允许我们发布我们的黑莓产品。也许我们可以编写一种实用方法来调用,而不是在我们的代码中调用 parseInt。我希望 RIM 意识到这一点,我希望他们能尽快修复它......
标签: gwt blackberry crash parseint