javascript - Safari - iPhone - WebApp 因未知原因崩溃

标签 javascript dom crash mobile-safari shadow-dom

我目前正在开发一个新的前端 javascript 框架。在过去的几天里,我重构了 DOM 更新器和一些其他代码,以使其看起来更好,并在 DOM 元素在内存中保持分离时消除一些内存泄漏。

不幸的是,iPhone 和 iPad 2 上的 Safari 现在由于未知原因开始崩溃(我正在测试的其他浏览器都很好

window :
IE10emu/11、edge 14、chrome、opera、FF - 最新版本

安卓:
Webview 4、38、chrome、opera、ff - 最新版本

并且没有问题)。

我尝试使用 Windows 上的 Chrome 和 ios_webkit_debug_proxy 通过远程调试对其进行调试,但不幸的是它没有向我显示任何内容。

我几乎确信当我使用主 DOM 文档或影子 DOM 文档时会出现问题。

奇怪的是:当我将日志记录切换到控制台时(有大量日志记录
框架中的功能)仅用于 DOM 更新器模块并使用远程调试功能,一切似乎都运行良好(当然除了它的速度很慢)并且它不再崩溃,所以我什至看不到它何时崩溃。

由于我没有 Mac,甚至没有 Apple 开发许可证,我正在寻求拥有 Mac 并有一些开发经验的人的帮助。我想知道是否有可能以某种方式调试这些意外崩溃,或者至少是否有可能得到它崩溃的原因(某种 Safari 日志?) - 内存泄漏,内存不足......无论什么可以帮助我做一些解决方法。

以前的版本运行良好。与它相比,我没有做任何特别的事情,尤其是在操作 DOM 时,但代码被重新排序,放置在更多的函数/方法中并进行了一些优化。

工作(更少或更多:)版本可以在这里找到:http://ajsfw.azurewebsites.net/

有问题的版本可以在这里找到:http://ajsdoc.azurewebsites.net/关闭日志记录(如有必要,我可以打开)

工作代码的来源可以在这里找到:https://github.com/atomsoftwarestudios/ajsdoc .

如有必要,我还可以提供新的、有问题的来源,但我不想将它们推送到主要来源,直到它得到修复,所以我可以 fork 或将其作为压缩包发送。问题是它是一个 Visual Studio 解决方案,目前与 Mac 有点不兼容 :) 但我很确定我们能找到一种方法。

代码已经很复杂了,可能需要在我身边进行一些合作才能找到正在发生的事情。

希望你能帮忙。

更新(问题已解决):

它在添加/删除“ontouchmove”事件监听器时崩溃。

我将多个 HTML 文档 (document.implementation.createHTML) 用于模板,并将主文档 (window.document) 用作托管渲染目标。当我使用innerHTML将模板加载到“shadow dom”时,分配给模板标签的ontouch ...属性导致了问题,所以在我设置模板innerHTML之前我重命名了它,然后在渲染到主DOM期间我添加了EventListener原名。

奇怪的是:在重构之前,事件监听器在模板“shadow DOM”中注册并不重要。但是我还添加了一些新功能,所以也许其中一个是导致它的原因。难以调试,尤其是在浏览器崩溃时。重要的是它再次像魅力一样工作,即使代码中的复杂性很小。

结果可以在之前提供的链接上看到,ajsdoc... 的日志记录如此之慢(IE10/11 慢得要命),如果未优化(未最小化)的 ajsfw 发布而没有记录那么快。

如果对 sbdy 感兴趣,则提交固定来源

最佳答案

所以我终于从 Safari 中获得了一些崩溃日志。

添加“ontouchmove”事件监听器时崩溃。现在我必须弄清楚为什么它在以前的版本中没有崩溃并在不同的时间注册它。

关于javascript - Safari - iPhone - WebApp 因未知原因崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42090152/

相关文章:

javascript - 捕获单个元素自己的删除事件

ios6 - dyld:找不到符号:__ZTISt9exception

android - 发布者关闭输入 channel 或发生错误。事件=0x8

c++ - 在 Qt/QML 中的每一帧更新图像时运行时崩溃

javascript - 在 UIWebView 中使用变音符号文本查找并突出显示阿拉伯语

javascript - 在 HTML Canvas 中单独旋转平铺图像

jquery - 如何保存/恢复对象在 DOM 树中的位置?

JavaScript this.todoList.filter 不是函数

javascript - 如何使用 JSOM 在 Sharepoint 中仅检索查找 ID

javascript - MVC中如何设置元素的属性