【发布时间】:2010-07-15 17:01:01
【问题描述】:
我在为移动 Safari 调试 Web 应用程序时遇到了一些问题。 Web 应用程序是相当复杂的服务器端模拟工具的前端。 Web 应用程序的工作原理概述如下:
- 用户会看到一个屏幕,他们可以在其中填写要执行的模拟的值。
- 用户单击“运行模拟”,此时对服务器进行 AJAX 调用。页面上的状态窗格已更新,表明正在运行模拟。一个 php 脚本使用 POST 的值运行模拟器,并返回一些 javascript 以首先更新状态栏,指示正在检索数据,然后设置另一个 AJAX 调用来请求结果数据。
- 服务器使用来自模拟的数据回复第二次 AJAX 调用 - 一些 json 格式的大型数组(大约 1-2mb 的总数据),以及一些用于清除状态窗格和绘图的 javascript结果的第一步。
- 然后用户可以使用一些滑块/选项卡来查看不同的绘图、浏览模拟时间步长等。
所有这些都适用于主要的桌面浏览器(IE 7+、Firefox(win、mac、linux)、safari(Mac、windows)等)。但是,在移动 safari 上,第 1 步和第 2 步运行良好(执行所有 javascript 以更新状态窗格等),但在第 3 步一切都崩溃了——似乎返回的 javascript 从未执行(状态窗格从不清除,从不绘制结果)。
我已插入一些警报以进行调试,但这些警报也未执行。最后,我尝试返回除模拟数据之外的所有内容,并且一切正常(尽管图是空白的),因此在大量返回 json 数据时出现问题。 safari javascript 调试器没有显示错误,我不知道如何继续调试这样的东西。有什么想法吗?
【问题讨论】:
-
之后的数据会怎样?如果以某种方式导入 DOM,则 1-2 MB 听起来很多。
-
数据被传递给使用 Raphaël 创建的自定义绘图对象(绘图有一个时间滑块,因此可以在模拟中看到时间 t 的模拟结果)。因此,在任何给定时间,只有大约 10-20k 的数据被使用。话虽如此,由于时间滑块可用于动画模拟结果,因此流式传输数据可能效果不佳。到目前为止,我已经能够使用超过 10-20mb 的数据以这种方式进行绘图(尽管只使用本地服务器上的浏览器,并且只使用桌面浏览器)
标签: javascript iphone ajax mobile-safari