dijit.Dialog
あなたが説明していることは、モーダルがロードメッセージとともに表示されるまでに道場自体がすでにロードされていることを前提としています。
通常、ページが完全に読み込まれると dojo の実行が開始されます。通常は、dojo コードを のパラメーターとして渡される無名関数内に配置しますdojo.addOnLoad()
。
そのためには、ページの残りの部分 (「リンク」と呼ばれるもの) を ajax を介して (たとえば、を使用して) ロードする必要がありますdijit.layout.ContentPane
。そうすれば、コンテンツがダウンロードされる前に Dojo を実行でき、「待機中」のメッセージをより早く表示できます。
次のようになります。
<html>
<head>
<link rel="stylesheet" href="/dojo/dijit/themes/tundra/tundra.css" type="text/css" media="screen" />
<script type="text/javascript" src="/dojo/dojo.js" djConfig="parseOnLoad:true"></script>
/* make sure that you shrinksafe together your libraries and dojo's for faster loading... */
<script type="text/javascript" src="/dojo/yourOwnDojoCompressedScripts.js"></script>
<script type="text/javascript">
var dialog;
dojo.addOnLoad(function(){
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.Dialog");
dialog = new dijit.Dialog();
dialog.setContent("<p>This page will be available in a tick!</p>");
dialog.show();
});
</script>
</head>
<body class="tundra">
<div id="delayedContent"
dojoType="dijit.layout.ContentPane"
href="/myContentUrl"
onLoad="dialog.hide()">
</div>
</body>
</html>
その計画の唯一の欠点は、dojo 自体です。shrinksafeライブラリの重量は 90K を超えます (そこに入れるものの量によっては、最大 300K になる可能性があります)。接続が遅い場合でも、ダウンロードにかなりの時間がかかります。とは言っても、静的な90K について話している --- 同じユーザーがセッションごとに 1 回だけダウンロードし、それらの静的ファイルが提供されるときに適切なキャッシュ/有効期限ヘッダーを設定するのに時間がかかる場合は、それよりもさらに少なくなります。