system.js scroll to anchor
This commit is contained in:
parent
dd36e27cb8
commit
c9300ae1ef
@ -53,21 +53,13 @@ SYSTEM.prototype.hashchange = function () {
|
|||||||
if(system.hash_change){
|
if(system.hash_change){
|
||||||
system.hash_change(system.cur_state().split(';')[0].split('(')[0]);}
|
system.hash_change(system.cur_state().split(';')[0].split('(')[0]);}
|
||||||
};
|
};
|
||||||
SYSTEM.prototype.handle_call_pages_page = function (html,entry,id,forced,cached,trycount) {
|
SYSTEM.prototype.handle_call_pages_page = function (html,entry,id,forced,cached,callback) {
|
||||||
var url = entry['url']+(window.location.search.substr(1) ? '&'+window.location.search.substr(1) : '' );
|
var url = entry['url']+(window.location.search.substr(1) ? '&'+window.location.search.substr(1) : '' );
|
||||||
if(!trycount){
|
|
||||||
trycount = 0;}
|
|
||||||
trycount++;
|
|
||||||
if($(entry['div']).length){
|
if($(entry['div']).length){
|
||||||
$(entry['div']).html(html);
|
$(entry['div']).html(html);
|
||||||
this.log_info('load page: '+id+entry['div']+' '+url+' - try '+trycount+' - success');
|
this.log_info('load page: '+id+entry['div']+' '+url+' - success');
|
||||||
} else {
|
} else {
|
||||||
this.log_error('load page: '+id+entry['div']+' '+url+' - try '+trycount+' - div not found');
|
this.log_error('load page: '+id+entry['div']+' '+url+' - div not found');
|
||||||
//Try again
|
|
||||||
if(trycount < 3){
|
|
||||||
var tc = trycount;
|
|
||||||
setTimeout(function() { system.handle_call_pages_page(html,entry,id,forced,cached,tc); },1000);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//Title
|
//Title
|
||||||
@ -135,19 +127,27 @@ SYSTEM.prototype.handle_call_pages_page = function (html,entry,id,forced,cached,
|
|||||||
}
|
}
|
||||||
//update state
|
//update state
|
||||||
this.state[entry['div']] = url;
|
this.state[entry['div']] = url;
|
||||||
|
callback();
|
||||||
}
|
}
|
||||||
SYSTEM.prototype.handle_call_pages_entry = function (entry,id,forced,cached) {
|
SYSTEM.prototype.handle_call_pages_entry = function (entry,id,forced,cached, callback) {
|
||||||
var url = entry['url']+(window.location.search.substr(1) ? '&'+window.location.search.substr(1) : '' );
|
var url = entry['url']+(window.location.search.substr(1) ? '&'+window.location.search.substr(1) : '' );
|
||||||
//check loaded state of div - reload only if required
|
//check loaded state of div - reload only if required
|
||||||
if(forced || this.state[entry['div']] !== url || !$(entry['div']).length || $(entry['div']).html() === ''){
|
if(forced || this.state[entry['div']] !== url || !$(entry['div']).length || $(entry['div']).html() === ''){
|
||||||
//load page
|
//load page
|
||||||
this.call_url(url,function(data){system.handle_call_pages_page(data,entry,id,forced,cached);},{},'html',true);
|
this.call_url(url,function(data){system.handle_call_pages_page(data,entry,id,forced,cached,callback);},{},'html',true);
|
||||||
} else {
|
} else {
|
||||||
this.log_info('load page: '+id+entry['div']+' '+url+' - cached');
|
this.log_info('load page: '+id+entry['div']+' '+url+' - cached');
|
||||||
|
callback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//internal function to handle pagestate results
|
//internal function to handle pagestate results
|
||||||
SYSTEM.prototype.handle_call_pages = function (data,id,forced,cached) {
|
SYSTEM.prototype.handle_call_pages = function (data,id,forced,cached) {
|
||||||
|
var hash = null;
|
||||||
|
if (id.indexOf('#') != -1) {
|
||||||
|
var splinters = id.split('#');
|
||||||
|
hash = splinters.pop()
|
||||||
|
id = splinters.pop();}
|
||||||
|
|
||||||
if(data['status']){
|
if(data['status']){
|
||||||
this.log_info('load pages: '+this.endpoint+'?call=pages&group='+this.group+'&state='+id+' - '+(cached ? 'cached ' : (forced ? 'forced' : 'success')));
|
this.log_info('load pages: '+this.endpoint+'?call=pages&group='+this.group+'&state='+id+' - '+(cached ? 'cached ' : (forced ? 'forced' : 'success')));
|
||||||
//state not found?
|
//state not found?
|
||||||
@ -163,9 +163,24 @@ SYSTEM.prototype.handle_call_pages = function (data,id,forced,cached) {
|
|||||||
//update history?
|
//update history?
|
||||||
if( !(id === this.start_state && this.cur_state() === '') && //avoid start state in url unless called explicit
|
if( !(id === this.start_state && this.cur_state() === '') && //avoid start state in url unless called explicit
|
||||||
id !== this.cur_state()){//new state?
|
id !== this.cur_state()){//new state?
|
||||||
window.history.pushState(null, "", '#!'+id);}
|
window.history.pushState(null, "", '#!'+id+(hash ? '#'+hash : null));}
|
||||||
|
|
||||||
|
var count = [];
|
||||||
data['result'].forEach(
|
data['result'].forEach(
|
||||||
function(entry) { system.handle_call_pages_entry(entry,id,forced,cached);});
|
function(entry){
|
||||||
|
system.handle_call_pages_entry(entry,id,forced,cached,
|
||||||
|
function(d){
|
||||||
|
count.push(true);
|
||||||
|
if(count.length === data['result'].length){
|
||||||
|
if(hash && $('#'+hash).length){
|
||||||
|
$(document.body).animate({'scrollTop': $('#'+hash).offset().top-50}, 750);
|
||||||
|
} else {
|
||||||
|
$(document.body).animate({'scrollTop': 0}, 750);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
this.log_info('Problem with your Pages: '+data['result']['message']);
|
this.log_info('Problem with your Pages: '+data['result']['message']);
|
||||||
}
|
}
|
||||||
@ -228,9 +243,10 @@ SYSTEM.prototype.load_css = function loadCSS(csssrc,forced) {
|
|||||||
|
|
||||||
SYSTEM.prototype.cur_state = function() {
|
SYSTEM.prototype.cur_state = function() {
|
||||||
var pathName = window.location.href;
|
var pathName = window.location.href;
|
||||||
|
|
||||||
if (pathName.indexOf('#!') != -1) {
|
if (pathName.indexOf('#!') != -1) {
|
||||||
return pathName.split('#!').pop();}
|
return pathName.split('#!').pop();}
|
||||||
return '';
|
return null;
|
||||||
};
|
};
|
||||||
SYSTEM.prototype.go_state = function(default_state,forced){
|
SYSTEM.prototype.go_state = function(default_state,forced){
|
||||||
var pageName = this.cur_state();
|
var pageName = this.cur_state();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user