#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