Вы можете использовать "хэш".Это часть URL, которая следует за символом «#».
Если вам нужно только реагировать на хэш во время загрузки страницы для поддержки функции закладок, тогда вы можете получить что-то вроде:
Ext.onReady(function() {
var tabPanel = new Ext.TabPanel({
// Configure for use in viewport as needed.
listeners: {
tabchange: function( tabPanel, tab ) {
window.location.hash = '#'+ tab.itemId;
}
}
});
var token = window.location.hash.substr(1);
if ( token ) {
var tab = tabPanel.get(token);
if ( ! tab ) {
// Create tab or error as necessary.
tab = new Ext.Panel({
itemId: token,
title: 'Tab: '+ token
});
tabPanel.add(tab);
}
tabPanel.setActiveTab(tab);
}
});
Вы также можете пойти дальше и использовать событие hashchange, поддерживаемое в последних версиях большинства браузеров.Это позволит вам реагировать на изменение хеша пользователем или программными средствами после завершения загрузки страницы:
if ( 'onhashchange' in window ) {
window.onhashchange = function() {
var token = window.location.hash.substr(1);
// Handle tab creation and activation as above.
}
}
Стоит отметить, что синглтон Ext.History обещает функциональность, аналогичную этой.Однако, начиная с ExtJS 3.3.1, ему не была предоставлена поддержка события hashchange, и вместо этого он полностью зависит от интервала опроса и скрытого взлома iframe.Я не был удовлетворен его производительностью в современных браузерах - в частности, в IE - пока не переписал его, чтобы использовать hashchange, где это возможно.