Dojo использует хеши в URL, чтобы разрешить закладку страниц, загруженных с помощью вызовов ajax.Это делается через API dojo.hash .Итак ... Я думаю, что лучшее, что вы можете сделать, это использовать его для запуска обратного вызова, который вы пишете на своей главной странице.
Для прокрутки до заданной позиции в загруженном содержимом вы можете использовать узел.scrollIntoView ().
Например, допустим, у вас есть страница с ContentPane с именем «mainPane», в которую вы загружаете HTML-фрагмент с именем «частичный фрагмент», а ваш фрагмент содержит 2 якоря, подобные этому:
-fragment.html:
<a href="#anchor1">Anchor 1</a>
<p>some very long contents...</p>
<a href="#anchor2">Anchor 2</a>
<p>some very long contents...</p>
Теперь предположим, что у вас есть 2 кнопки на главной странице (с именами btn1 и btn2), которые будут использоваться для загрузки вашего фрагмента и перехода к нужной привязке.Затем вы можете подключить это со следующим javascript на своей главной странице:
<script type="text/javascript">
require(['dojo/on',
'dojo/hash',
'dojo/_base/connect',
'dijit/layout/BorderContainer',
'dijit/layout/ContentPane',
'dijit/form/Button'],
function(on, hash, connect){
dojo.ready(function(){
var contentPane = dijit.byId('mainPane');
var btn1 = dijit.byId('btn1');
var btn2 = dijit.byId('btn2');
btn1.on("Click", function(e){
if (!(contentPane.get('href') == 'fragment.html')) {
contentPane.set("href", "fragment.html");
}
hash("anchor1");
});
btn2.on("Click", function(e){
if (!(contentPane.get('href') == 'fragment.html')) {
contentPane.set("href", "fragment.html");
}
hash("anchor2");
});
// In case we have a hash in the URL on the first page load, load the fragment so we can navigate to the anchor.
hash() && contentPane.set("href", "fragment.html");
// This callback is what will perform the actual scroll to the anchor
var callback = function(){
var anchor = Array.pop(dojo.query('a[href="#' + hash() + '"]'));
anchor && anchor.scrollIntoView();
};
contentPane.on("DownloadEnd", function(e){
console.debug("fragment loaded");
// Call the callback the first time the fragment loads then subscribe to hashchange topic
callback();
connect.subscribe("/dojo/hashchange", null, callback);
});
}); // dojo.ready
}); // require
</script>