Итак, я пытаюсь вызвать функцию, когда страница загружается, но эта функция должна перезагрузиться, когда есть хэш-обмен.
Прямо сейчас я делаю это так:
var HabJax = HabJax || function() {
"use strict";
if(window.location.hash) {
HabJax.handle_ajax();
}
window.addEventListener("hashchange", function(){
HabJax.handle_ajax();
}, false);
return this;
};
window.onload = function(){
this.HabJax = new HabJax();
}
HabJax.prototype = {
page: null,
self: this,
hotelBase: 'http://localhost/Ajax/',
handle_ajax: function()
{
var query_string = window.location.hash;
query_string = query_string.substr(1);
query_string = query_string.substr(1);
if(query_string != 'index' && query_string != '0' && query_string != '' && query_string != null) {
$.ajax({
type: "POST",
url: this.hotelBase + query_string,
success: function(data) {
$("#contentInner").slideUp('fast', function() {
$("#content").html(data);
$("#contentInner").slideDown('slow');
});
HabJax.initialize();
}
});
} else {
window.location.hash = '!1';
}
},
initialize: function()
{
console.log('HabJax: Initialized (Page: ' + this.getPage() + ')');
this.page = this.getPage();
this.executePageFunctionalities(this.page);
window.onhashchange = function() {
HabJax.page = HabJax.getPage();
HabJax.executePageFunctionalities(HabJax.page);
}
return true;
},
getPage: function()
{
var page = location.href,
pageName,
action;
if (page.indexOf('&') != -1)
{
pageName = page.substring(page.lastIndexOf('/') + 1, page.indexOf('&'));
}
else if(page.indexOf('#') != -1)
{
pageName = page.substring(page.lastIndexOf('/') + 1, page.indexOf('#'));
pageName = pageName.substring(0, pageName.length - 1).slice(2);
}
else
{
pageName = page.substring(page.lastIndexOf('/') + 1);
}
return (pageName == '' ? '0' : pageName);
},
executePageFunctionalities: function(page)
{
switch (page)
{
case null:
case '0':
console.log('HabJax Index: Initialized');
break;
case '1':
console.log('HabJax Me: Initialized');
this.Me.init();
break;
case '2':
console.log('HabJax Test: Initialized');
break;
}
},
Но проблема здесь в том, что функция handle_ajax () дважды вызывается при замене ...
Изображение:
Как мне решить эту проблему?
РЕДАКТИРОВАТЬ Нашли решение, ответ в комментариях.