То, что вы описываете, предполагает, что само dojo уже было загружено к моменту появления модального сообщения 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>
Единственный недостаток в этом плане - это само додзё: ожидайте, что ваша термоусадочная библиотека будет весить более 90 КБ (возможно, до 300 КБ, в зависимости от того, сколько вы там положили). При медленном соединении загрузка все равно занимает заметное количество времени. Тем не менее, мы говорим о static 90K - один и тот же пользователь будет загружать его только один раз за сеанс, и даже реже, если вы потратите время на установку соответствующих заголовков cache / expire, когда эти статические файлы обслуживаются.