History.js Проблема

#javascript #html #history.js

#javascript #HTML #history.js

Вопрос:

Я заставил свой history API работать, однако я пытаюсь реализовать History.js но, похоже, я не могу получить доступ к state.data. Я хочу использовать строку в состоянии.data to9 вызывает соответствующую функцию. Хотя моя концепция хорошо работает для History API, она не подходит для History.js мой код расположен ниже:

 (function (window, undefined) {
    var History = window.History; // Note: We are using a capital H instead of a lower h
    if (!History.enabled) {
        // History.js is disabled for this browser.
        // This is because we can optionally choose to support HTML4 browsers or not.
        return false;
    }

    // Bind to StateChange Event
    History.Adapter.bind(window, 'statechange', function () { // Note: We are using statechange instead of popstate
        var State = History.getState(); // Note: We are using History.getState() instead of event.state
        alert(State.data);
        if (State.data != null) {
            var strFun = State.data;
            alert(strFun);
            //Create the function call from function name and parameter.
            var mySplitResult = strFun.split(",");
            //var strParam = "null";
            //Call the function and arguments 
            window[mySplitResult[0]](mySplitResult[1], mySplitResult[2]);
        }
    });
})(window);
  

Мои ссылки как таковые:

 <li>
  <a href="#" onclick="javascript:History.pushState({state:newarticles},'New Articles','newarticle'); return false;">Articles</a>
</li>
<li>
  <a href="#" onclick="javascript:History.pushState({state:displaybookmarks},'Favourties','favourties'); return false;">Favourites</a>
</li>
<li>
  <a href="#" onclick="javascript:History.pushState({state:pagenation},Listing,1,'Archive','archieve1'); return false;">Archive</a>
</li>
  

Любая помощь будет высоко оценена.

Ответ №1:

Правильный способ вызвать каждый из них следующий… Обратите внимание, что у onclick нет javascript: , и данные состояния заключены в кавычки!

 <a href="#" onclick="History.pushState({state:'newarticles'},'New Articles','newarticle'); return false;"amp;gt;Articlesamp;lt;/a>
  

Надеюсь, это поможет!
Пит

Комментарии:

1. попробую и задокументирую свои результаты

2. хорошо, это все еще не работает, когда я предупреждаю о своем состоянии. данные, которые я получаю, являются объектом Object, а не строкой. Как я могу получить свое состояние. данные для отображения строки вместо объекта.

3. я заставил это работать, но с state.title вместо state.data. Это кажется состоянием. по какой-то причине данные все еще содержат объект

4. Это перенос состояния в объект, потому что вы вводите его как объект. Вместо того, чтобы делать .pushSate({state:’newarticles’}, «новый» …) Попробуйте просто выполнить .pushState(«новые статьи», «Новые статьи»…

5. Я уже пробовал это, и это не сработало, на самом деле это нормально работало в обычном History API для HTML5, но не для History.js