javascript - 我的 HTML5 Web 应用程序崩溃了,我不知道如何调试

标签 javascript debugging web-applications html canvas

我使用 HTML5 canvas 标签和一点音频编写了一个文字游戏。我在Linux系统上的chrome网络浏览器上开发了该应用程序。最近在测试阶段在 Mac 上的 safari 5.0.3 上进行了尝试,结果网页卡住了。不仅 Canvas 元素被卡住,页面上的交互元素也被卡住。我在开发时有时在 google chrome 上遇到过这个问题,但由于控制台在发生这种情况之前没有抛出任何错误,所以我不太相信它。现在,根据要求,我应该支持 chrome 和 safari,但是 safari 上的这种惨淡表现让我感到震惊,我看不出会抛出什么错误,从而可能导致这种情况。更糟糕的是,在我运行 ubuntu 的 2 年旧 MacBook 上,使用这个应用程序的 CPU 使用率达到了 70-80%……我只能可怜那些使用 mac 来操作这个应用程序的人,这无疑是一个更重的操作系统。有人可以帮助我找到一个可以开始的地方,以找出到底是什么导致了这个问题。

我在 google chrome 控制台上运行了这个 web 应用程序的配置文件,并注意到堆中的 spanshot 值随着游戏的进行而稳定增加,特别是(根)值跳跃了 900 个计数。任何帮助将不胜感激!

谢谢

编辑:我不知道这是否有帮助,但我注意到,即使在应用程序无响应后刷新页面,页面也会重新加载,我仍然无法与页面元素交互,但选项卡滚动条会继续工作,我可以完全看到我的应用程序窗口。因此,总而言之,选项卡停止接受页面内任何类型的用户交互。

编辑2:没有。它仍然无法工作...应用程序在双击 Canvas 元素时崩溃。控制台也没有抛出任何错误! =/我注意到这个问题只存在于 Safari 中!

Edit3:好的,所以我今天进行了一些其他测试。我仅隔离了 HTML5 小部件及其 HTML 数据,并在本地 safari 上运行它以重现该错误。唉,效果很好!所以我尝试在没有 Facebook 集成的情况下从我的服务器玩游戏,结果又正常了!因此,该问题仅出现在 MAC OSX 上的 safari 中,而该小部件则作为 Facebook 应用程序出现在 Facebook Canvas 上。我很难为这个应用程序想出一个简化的测试用例场景... =/更奇怪的是,这个游戏在 Windows 的 Safari 上运行得很好。此外,在该选项卡卡住后,其他选项卡继续响应且运行良好。单击关闭按钮和其他内容后,此选项卡会关闭,但是如果我在卡住后在同一选项卡上加载另一个页面,则页面会加载到选项卡 Canvas 中,但我无法与其交互。连 google.com 都没有!所以我确信我的游戏没有错误,但它是一个 Safari 错误...很快就会提交错误报告,感谢所有帮助人员...:)

最佳答案

一句话概括你应该做什么:用尽可能少的代码重现问题。

开始删除应用程序的某些部分,直到找到任何可以删除的内容,同时仍然保留错误。首先扔掉外部资源(css、图像等),只留下 html 和 javascript。尝试删除音频。尝试删除尽可能多的游戏逻辑。尝试删除所有用户输入代码。

如果这确实是 Safari 本身的错误,而不是您的代码中的错误,那么应该可以创建一个非常的代码示例。在此之前,如果没有任何详细信息或示例,就说“我的网络应用程序无法在 Safari 中运行”,将毫无意义。

关于javascript - 我的 HTML5 Web 应用程序崩溃了,我不知道如何调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5103104/

相关文章:

javascript - 在滚动部分的末尾添加动画

java - 是否适合在 Java 中对从数据库检索的一小部分数据执行连接操作

javascript - 如果 Mocha 测试花费的时间短于给定的时间段,我如何才能失败?

javascript - 选择图像时显示预览 div

javascript - Javascript html 中的 Windows 身份验证

c++ - 如何在Linux的QTCreator中用dlopen打开的共享库中设置断点

xcode - 如何调试iOS因内存压力而崩溃

python - 在 futex(..., FUTEX_WAIT_BITSET_PRIVATE|...) 中查看挂起 Python 的堆栈跟踪

javascript - 如何在 JSF 中实现复制到剪贴板按钮?

Python Dash Basic Auth - 在应用程序中获取用户名