Imは、以下の構造を持つHTMLアプリケーションを開発:Foundationグローバルは時には定義されていないのはなぜですか?
<html>
<head>
<!-- other head elements -->
<script src="jquery.js?_v=3736f12"></script>
<script src="error.js?_v=291bb66"></script>
</head>
<body>
<!-- other body elements -->
<script src="foundation.js?_v=880a16f"></script>
<script src="my_lib.js?_v=1c3b21e"></script>
</body>
</html>
何error.js
は、それがwindow.onerrorイベントをリッスンし、それがトリガされたとき、それは私たちの開発者に通知するために、サーバーにAJAXを経由して、エラーメッセージを送ることです。このようにして、ユーザーのjavascriptがいつ何かについて苦情を受け取るとわかります。
my_lib.js
は、非常に大きなライブラリであり、多くのタスクを行います。また、HTML構造のmy_lib.jsの直前に含まれるFoundationフレームワークとそのjavascriptライブラリで構築されることがよくあります。
今私は私の質問に行くことができます。これらの日は、私たちはものと同様のエラーを取得している:
- はTypeError:未定義
- 捕捉されない例外TypeErrorを( 'window.Foundation.Abide' を評価)オブジェクトではありません:window.Foundationは未定義
- はTypeErrorがあることはできません(コードFoundation.Dropdown中)未定義のプロパティ「ドロップダウンを」
を読んで、これらのエラーは通常、排他的ではないが、多くの場合、モバイルデバイスから、財団法人地球Foundation
my_lib.js内側と様々いるUserAgentからの使用から来ます。エラーのタイミングは、通常、準備完了イベントの前、または準備完了イベントと負荷イベントの間のタイミングです。狂ったことは、それらのエラーが同じユーザーから常に来るというわけではなく(同じページで2回であっても)、時には時々来るため、私たちは単一のものを再現できませんでした。
私たちは決してFoundation
を明示的に未定義に設定していないと確信しています。それがあれば、それはすべてのブロワーの負荷問題になります。
これは、foundation.jsがmy_lib.jsを評価する前に常に評価されるかどうかを疑問視しました。私がここで記事を読んでから、私はタグが順番に評価され、お互いを待っていることを理解しています(私たちは非同期または遅延を使用しません)。
サーバログから取得できるもう一つの手がかりは、ユーザがしばらくしばらくしてから私たちのサイトに入る/リロードしたときに発生するということです。たとえば、ログインしている間にログインした後、または更新していない状態で長時間活動していない場合。
誰もがこのhapenningをなぜ知っていますか?
ありがとうございます。
iは、ライブラリは、より良い – madalinivascu
をロードされたすべてのレンダリングは、私がスクリプト要素にdefer' '属性を与えるためにあなたをお勧めします – madalinivascu
完了したときに、すべてのプラグインを開始する前に、プラグインが開始されていると思います。 JSをダウンロードしてHTML(ページの読み込み速度を上げることができる)を解析し、ドキュメントに表示されている順序でスクリプトを実行するようにします。ところで、なぜあなたは、foundationやmy_libのように、ドキュメントの最後に 'script'を置かないのですか? – debute