Extjs - Генерация уникального URL для вкладок - PullRequest
4 голосов
/ 28 марта 2011

Я понимаю, что ExtJS использует AJAX для всех коммуникаций на стороне сервера, и что в идеале должна быть только одна страница на приложение.Но я изучаю возможность создания уникального URL-адреса для вкладки ExtJS, которую пользователь затем может скопировать из адресной строки для последующего использования (традиционный подход веб-приложения - сделать страницу закладкой).Пожалуйста, дайте мне знать, если кто-нибудь сделал что-то подобное.

1 Ответ

10 голосов
/ 28 марта 2011

Вы можете использовать "хэш".Это часть 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, где это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...