Получение history.js для запуска функции

0

Я хочу, чтобы history.js работал на моей домашней странице: http://www.dinomuhic.com/2010/index.php

Главный код javascript моей домашней страницы находится здесь: http://www.dinomuhic.com/2010/js/bunch.js

Моя домашняя страница является самокодируемой, поэтому никаких cms, Wordpress и т.д. Весь сайт работает следующим образом: на вашем клиенте есть идентификатор, этот идентификатор отправляется в функцию sndReq, а затем появляется содержимое.

Когда вы нажимаете, например, на ссылку "Движение", что-то такое посылает

javascript:sndReq('k001','Main-Menue','Menue-Open','Motion')

Это 4 vars. Сначала идентификатор, а затем 3 vars для Google Analytics для правильного отслеживания.

Теперь, что я сделал, я связал сценарий history.js с моей индексной страницей, как вы можете видеть, и я добавил эту строку в мою функцию sndReq:

History.pushState( {state:1}, "DinoMuhic.com - "+label, "?="+req );

Я больше ничего не делал. Значит, я не добавлял никаких других строк кода для работы history.js.

Итак, что уже работает, так это то, что он добавляет правильную строку в url. При нажатии на кнопку "Движение" строка URL выглядит следующим образом:

http://www.dinomuhic.com/2010/index.php?=k001

Это хорошо, потому что это закладки и отправка только идентификатора также работает и отображает правильный контент.

И когда я нажимаю кнопку "Назад", он также заменяет строку на предыдущую. Но то, чего он не делает, это снова запустить функцию sndReq, чтобы на последнем экране также отображался контент последнего щелчка. Строка URL изменяется, но не содержимое.

Мне просто нужно сделать history.js сохранить вызовы функции sndReq и вызвать их снова при повторном нажатии кнопок назад или вперед.

Надеюсь, я объяснил все достаточно.

Если бы это сделало все проще, просто предположите, что я просто отправляю идентификатор, а не другие 3 vars для аналитики Google, потому что он также работает, только отправляя идентификатор, а не остальные.

заранее спасибо

Теги:
function
history.js

1 ответ

1
Лучший ответ

Хорошо, я понял, что понял.

В основном мне это нужно:

History.Adapter.bind(window,'statechange',function(){ 
    var State = History.getState();
    sndReq(State.data[0],State.data[1],State.data[2],State.data[3]);
});

Так вы вызываете функцию каждый раз, когда вы нажимаете кнопку "Назад". Это должно быть внутри функции $(function(){}, поэтому она активна все время.

Но для функции sndReq для получения всех данных, необходимых для отображения правильного содержимого, я добавил эту строку в свою функцию sndReq

var sndData= new Array(req,category,action,label);

Это всего лишь массив, заполненный входом, который sndReq получает, когда вы нажимаете на ссылку.

Затем вы передаете эти данные команде push state

History.pushState( sndData, "DinoMuhic.com - "+label, "?="+req);

И это работает;) Я сделал дополнительную страницу для этого, чтобы проверить это, это еще не в живой версии.

Место проведения тестирования: http://www.dinomuhic.com/2010/index0.php

Ещё вопросы

Сообщество Overcoder
Наверх
Меню