状況:
マークアップとjavascript、いくつかの.jsファイル、スタイルシート、およびASP.NETページ上のいくつかの追加のインラインjavascriptを含むHTMLファイルからASP.NETでページを構築しています。VisualStudio2010でASP>NET開発サーバーホストを使用して作業します。
XMLファイルとjsファイルはサードパーティによって提供されており、変更することはできません。jsファイルの1つは「our」ファイルであり、変更することができます。
HTMLファイルは記入可能な質問票です。現在、HTMLファイルを「ホスト」して回答を保存するデスクトップアプリケーションがあります。
全体的な目標は、Webサイトでアンケートをホストして、Web上のデスクトップアプリケーションの機能を複製できるようにすることです。Javascriptは、デスクトップアプリケーションがASP.NETではないものを複製するために使用されます。
HTMLファイルには<script>
、jsファイルへのリンクと、マークアップ後のインラインJavaScriptの大きなブロックが含まれています。インラインJavaScriptの行(関数ではなく、実際のコード行)は、「our」インクルードファイルの関数を呼び出します。
ASP.NETコードでは、HTMLファイルからコンテンツを抽出し、それを適用してASP.NETページを構築しています。CSSリンク、スクリプトリンク、マークアップ、インラインスクリプトブロックなど。したがって、出力応答は次のようになります。
<html>
<head>
<link to CSS>
<script src=thirdparty.js>
<script src=our.js>
</head>
<body>
third party HTML markup
<script>
line of code here that calls function in our.js;
</script>
<script>
desktop duplication code here;
</script>
</body>
</html>
jsファイルのコンテンツをコピーして、インラインスクリプトブロックとしてページに組み込むと、すべてが正常に機能します。それらをリンクとして含めると、上記の行がデバッガーで「関数未定義」エラーをスローすることがあります。つまり、javascriptファイルがロード/インクルードされていないかのように機能します。私の知る限り、すべてのjavascriptをロードして解析してから実行する必要があるため、これは発生しないはずです。
質問:
JavaScriptは順不同で/非同期にロードされていますか?もしそうなら、どうすれば行が実行される前にすべてのjavascriptをロードして解析することができますか?
ノート:
はい、ASP.NETでページを作成する必要があります。「ファイル」は動的であり、実際にはWebサービスから読み取られるため、事前に準備することはできません。私が作成しようとしているのは、いくつかのサプライヤーの質問票を処理するための一般的なアプローチです。
サードパーティのJavaScriptとマークアップは、レガシーシステムであるため、IEでのみ機能します。
明らかな理由で実際のコードを表示できません。