2017-02-07 3 views
0

私は現在、新しいフロントエンドのjavascriptフレームワークに取り組んでいます。ここ数日、私はDOMアップデータといくつかのコードを見直して、DOM要素がメモリに残っているときにメモリリークを取り除くようにしました。 IE10emu/11、エッジ14、クロム、オペラ、FF:Safari - iPhone - WebAppが不明な理由でクラッシュする

残念ながら、Safariは両方で、iPhoneとiPad 2は、未知の理由(私がテストしていブラウザの残りの部分は細かい

ウィンドウですから、今クラッシュ開始しました - 最新バージョン

アンドロイド: のWebView 4、38、クローム、オペラ、FF - 最新バージョン

と問題はありません)。

Windows用のChromeとios_webkit_debug_proxyを使用してリモートデバッグでデバッグしようとしましたが、残念ながら私には何も表示されません。

メインDOMドキュメントまたはシャドーDOMドキュメントで作業しているときに問題が発生する可能性はほとんどあります。

奇妙なこと:コンソールにログを書き込むと(フレームワークに広範囲なログがある 機能があります)、DOMアップデータモジュールのみでリモートデバッグ機能を使用すると、すべてがうまく機能しているようですコース)とそれはもはやクラッシュしないので、私はそれがクラッシュするときも見ることができません。

私はMacを所有していないため、Macを所有していて開発経験がある人の助けを借りています。私はそれが何らかの形で予期せぬクラッシュをデバッグすることが可能かどうか、あるいは少なくともクラッシュする理由(サファリログのようなもの)を得ることができるかどうかを知りたいと思います - メモリリーク、メモリ不足...いくつかの回避策を実行するのに役立つものは何でも。

以前のバージョンは正常に動作していました。これと比較して、特にDOMを操作するときは特に何もしませんが、コードは並べ替えられ、より多くの関数/メソッドに配置され、少し最適化されます。

作業(以下以上:)バージョンがここで見つけることができます:http://ajsfw.azurewebsites.net/

問題のあるバージョンはここで見つけることができます:ログとhttp://ajsdoc.azurewebsites.net/は、(必要であれば、私はオンに切り替えることができます)

ソースのオフ作業コードはhttps://github.com/atomsoftwarestudios/ajsdocで見つけることができます。

私は必要に応じて新しい問題のある情報源を提供することもできますが、固定されるまでメインにプッシュしたくないので、フォークするか、ZIP形式で送信します。問題は、現時点ではMacと少し互換性のないビジュアルスタジオソリューションだということです:)しかし、私たちは方法を見つけることができると確信しています。

コードはまだ静かで複雑で、おそらく私の側では何が起こっているのかを見つけるためにcoopeartionのビットが必要になるでしょう。

希望すると助かります。

更新(問題解決):

それは "ontouchmove" イベントリスナーを追加/削除にクラッシュしていました。

テンプレート用に複数のHTMLドキュメント(document.implementation.createHTML)を使用し、マネージドレンダーターゲットとしてメインドキュメント(window.document)を使用しています。 innerHTMLを使用して "shadow dom"にテンプレートをロードすると、テンプレートタグに割り当てられたontouch ...属性が問題を引き起こしていましたので、innerHTMLテンプレートを設定してからメインDOMにレンダリングするときに、元の名前。

奇妙なこと:リファクタリングの前に、イベントリスナーがテンプレート "shadow DOM"に登録されていても問題ありませんでした。しかし、私はいくつかの新機能も追加しました。おそらくそのうちの1つが原因です。デバッグが難しく、特にブラウザがクラッシュしているとき。重要なことは、たとえコード内に小さな複雑さがあっても、再び魅力のように機能するということです。

結果は、ajsdoc ...はロギングが遅い(IE10/11では遅い)、ajsfwが最適化されていない(最小化されていない)リリースではロギングがそれほど速くない場合に表示されます。 sbdyが

+0

リファクタリング後にmetntionリファレンスガイドに何らかの問題があるのを忘れてしまいましたが、質問の対象にはなりません。 – Fis

+0

実際にブラウザをクラッシュさせている場合は、https://bugs.webkit.org/でバグを報告することを検討してください。 – sideshowbarker

+0

@sideshowbakerクラッシュしたときのブラウザのバグは間違いありません:D私はポリマーと同様の問題を発見したので、touchEventsChangedTimerFired中のクラッシュはGoogleによって既に報告されています。考えておく。 – Fis

答えて

0

をinterrestedされている場合

固定発生源は、だから私はサファリからいくつかのクラッシュログを最終的に得られているコミット。

"ontouchmove"イベントリスナーの追加時にクラッシュしています。今では、以前のバージョンでクラッシュして別の時間に登録しなかった理由を理解する必要があります。

0

問題がどこにあるかを要約すると、テンプレート用に複数のHTMLドキュメント(document.implementation.createHTML)を使用し、マネージドレンダーターゲットとしてメインドキュメント(window.document)を使用しています。 innerHTMLを使用して "shadow Dom"にテンプレートをロードしたときにテンプレートタグに割り当てられたontouch ...属性が問題を引き起こしていましたので、innerHTMLテンプレートを設定する前に名前を変更してから、メインDOMへのレンダリング時にaddEventListenerを元の名前。

奇妙なこと:リファクタリングの前に、イベントリスナーがテンプレート "shadow DOM"に登録されていても問題ありませんでした。しかし、私はいくつかの新機能も追加しました。おそらくそのうちの1つが原因です。デバッグが難しく、特にブラウザがクラッシュしているとき。重要なことは、たとえコード内に小さな複雑さがあっても、再び魅力のように機能するということです。

関連する問題