我使用HTML5 canvas标签和一点音频编写了一个文字游戏。我在linux系统上的chrome web浏览器上开发了应用程序。最近在测试阶段,它在Mac上的safari 5.0.3上进行了尝试,并且网页冻结了。不仅是canvas元素,而且页面上的交互元素也冻结了。我在开发时有时会在谷歌浏览器上遇到这个问题,但由于控制台在发生这种情况之前没有抛出任何错误,我没有给它太多信任。现在根据要求,我应该支持chrome和safari,但是这种令人沮丧的safari性能让我感到震惊,我无法看到可能导致这种情况的错误。更糟糕的是,使用这个应用程序的CPU使用率在运行ubuntu的2yr旧macbook上达到70-80%...我只能怜惜使用mac操作这个应用程序的人,这无疑是一个更重的操作系统。有人可以帮助我找到一个我可以开始的地方,找出究竟是什么导致了这个问题。
我在google chromes控制台上运行此webapp上的个人资料,并注意到堆中的spanshot值随着游戏的播放而稳步增加,特别是(根)值跳跃了900个计数。任何帮助将非常感谢!
由于
编辑:我不知道这是否有帮助,但我注意到,即使在应用程序无响应后刷新页面页面重新加载,我仍然无法与页面元素交互,但标签滚动条仍在继续工作,我可以完全看到我的应用程序窗口。因此,总结标签会停止接受页面内的任何类型的用户交互。Edit2:Nop。它仍然不起作用...双击canvas元素时应用程序崩溃。控制台也没有抛出任何错误! = /我注意到这个问题仅限于safari!
Edit3:好的,所以今天我进行了一些其他测试。我仅隔离了HTML5小部件及其HTML数据,并在本地safari上运行它以重现错误。唉它运作良好!所以我尝试在没有Facebook集成的情况下从我的服务器上玩游戏,它再次正常工作!所以问题只出现在MAC OSX上的safari上,而小部件在Facebook画布上作为Facebook应用程序。我很难为这个应用程序提出一个简化的测试用例场景... = /它变得更奇怪,游戏在Windows的safari上运行良好。在标签冻结之后,其他标签继续响应并且正常工作。单击关闭按钮和其他内容时,此选项卡也会关闭,但是如果我在冻结后在同一选项卡上加载另一个页面,则会在选项卡画布中加载页面,但我无法与其进行交互。甚至不是google.com!所以我确信我的游戏没有任何错误,但它是一个狩猎错误...很快就会提交错误报告,感谢所有人的帮助... :)
答案 0 :(得分:2)
你应该用一句话做什么:用尽可能少的代码重现问题。
开始删除部分应用,直到找不到任何可以删除的内容,同时仍然保留错误。首先抛出外部资源(css,图像等),只留下html和javascript。尝试删除音频。尽量删除尽可能多的游戏逻辑。尝试删除所有用户输入代码。
如果这确实是Safari本身的错误,而不是代码中的错误,则应该可以创建非常小代码示例。直到你有了这个,说“我的网络应用程序在safari中不起作用”,没有任何细节或例子,将无处可去。