mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
refactor(client) mv Events.add to listeners
This commit is contained in:
parent
d1dda5a7ae
commit
5e055f3d67
2 changed files with 307 additions and 267 deletions
294
lib/client.js
294
lib/client.js
|
|
@ -7,8 +7,7 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
(function(Util, DOM){
|
||||
'use strict';
|
||||
|
||||
var Key, Config, Modules, FileTemplate, PathTemplate,
|
||||
Events = DOM.Events,
|
||||
var Key, Config, Modules, FileTemplate, PathTemplate, Listeners,
|
||||
Cache = DOM.Cache;
|
||||
|
||||
CloudCmd = {
|
||||
|
|
@ -26,16 +25,6 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
})()
|
||||
};
|
||||
|
||||
CloudCmd.analytics = function(){
|
||||
Events.addOneTime('mousemove', function(){
|
||||
var lUrl = CloudCmd.LIBDIRCLIENT + 'analytics.js';
|
||||
|
||||
setTimeout(function(){
|
||||
DOM.jsload(lUrl);
|
||||
}, 5000);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Функция привязываеться ко всем ссылкам и
|
||||
* загружает содержимое каталогов
|
||||
|
|
@ -132,7 +121,6 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
var lCallBack = function(){
|
||||
Util.loadOnLoad([
|
||||
Util.retExec(route, location.hash),
|
||||
initKeysPanel,
|
||||
initModules,
|
||||
baseInit
|
||||
]);
|
||||
|
|
@ -147,17 +135,6 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
};
|
||||
|
||||
Util.ifExec(document.body.scrollIntoViewIfNeeded, lCallBack, lFunc);
|
||||
|
||||
DOM.Events.add(['unload', 'beforeunload'], function (pEvent) {
|
||||
var lRet, lIsBind = Key && Key.isBind();
|
||||
|
||||
if(!lIsBind) {
|
||||
DOM.preventDefault(pEvent);
|
||||
lRet = 'Please make sure that you saved all work.';
|
||||
}
|
||||
|
||||
return lRet;
|
||||
});
|
||||
};
|
||||
|
||||
function initModules(pCallBack){
|
||||
|
|
@ -173,10 +150,6 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
CloudCmd.getModules(function(pModules) {
|
||||
pModules = pModules || [];
|
||||
|
||||
Events.addContextMenu(function(pEvent){
|
||||
CloudCmd.Menu.ENABLED || DOM.preventDefault(pEvent);
|
||||
}, document);
|
||||
|
||||
var i, n, lStorage = 'storage',
|
||||
lShowLoadFunc = Util.retFunc( DOM.Images.showLoad, {top:true} ),
|
||||
|
||||
|
|
@ -217,117 +190,26 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
});
|
||||
}
|
||||
|
||||
function initKeysPanel(pCallBack){
|
||||
var i, lButton, lEl,
|
||||
lKeysPanel = {},
|
||||
|
||||
lFuncs =[
|
||||
null,
|
||||
CloudCmd.Help, /* f1 */
|
||||
DOM.renameCurrent, /* f2 */
|
||||
CloudCmd.View, /* f3 */
|
||||
CloudCmd.Edit, /* f4 */
|
||||
DOM.copyCurrent, /* f5 */
|
||||
DOM.moveCurrent, /* f6 */
|
||||
DOM.promptNewDir, /* f7 */
|
||||
DOM.promptDeleteSelected, /* f8 */
|
||||
CloudCmd.Menu, /* f9 */
|
||||
];
|
||||
|
||||
for (i = 1; i <= 9; i++) {
|
||||
lButton = 'f' + i,
|
||||
lEl = DOM.getById('f' + i);
|
||||
lKeysPanel[lButton] = lEl;
|
||||
|
||||
if (i === 1 || i === 3 || i === 4 || i === 9)
|
||||
Events.addOneTime('click', lFuncs[i], lEl);
|
||||
else
|
||||
Events.addClick(lFuncs[i], lEl);
|
||||
}
|
||||
|
||||
lButton = '~',
|
||||
lEl = DOM.getById('~');
|
||||
lKeysPanel[lButton] = lEl;
|
||||
Events.addOneTime('click', CloudCmd.Console, lEl);
|
||||
|
||||
CloudCmd.KeysPanel = lKeysPanel;
|
||||
Util.exec(pCallBack);
|
||||
}
|
||||
|
||||
function baseInit(pCallBack) {
|
||||
var panels = DOM.getByClass('panel'),
|
||||
i = 0,
|
||||
n = panels.length,
|
||||
preventDefault = function (event) {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
},
|
||||
toggle = function () {
|
||||
for (i = 0; i < n; i++)
|
||||
DOM.toggleClass(panels[i], 'selected-panel');
|
||||
},
|
||||
onDrop = function (event) {
|
||||
var reader, file, files,
|
||||
dir = DOM.getCurrentDirPath(),
|
||||
load = function(file){
|
||||
return function(event) {
|
||||
var path = dir + file.name,
|
||||
data = event.target.result;
|
||||
|
||||
DOM.RESTfull.save(path, data, CloudCmd.refresh);
|
||||
};
|
||||
};
|
||||
var LIB = CloudCmd.LIBDIR,
|
||||
LIBCLIENT = CloudCmd.LIBDIRCLIENT,
|
||||
files = [
|
||||
LIB + 'cloudfunc.js',
|
||||
LIBCLIENT + 'listeners.js'
|
||||
];
|
||||
|
||||
preventDefault(event);
|
||||
toggle();
|
||||
|
||||
files = event.dataTransfer.files;
|
||||
|
||||
if (files.length) {
|
||||
n = files.length;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
reader = new FileReader();
|
||||
file = files[i];
|
||||
Events.add('load', load(file), reader);
|
||||
reader.readAsArrayBuffer(file);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (window.applicationCache)
|
||||
Events.add('updateready', function() {
|
||||
var ret = confirm('An update is available. Reload now?');
|
||||
|
||||
if (ret)
|
||||
location.reload();
|
||||
|
||||
}, applicationCache);
|
||||
|
||||
Events.add(['dragenter', 'dragleave'], toggle);
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
Events.add('dragover', preventDefault, panels[i]);
|
||||
Events.add('drop', onDrop, panels[i]);
|
||||
}
|
||||
|
||||
|
||||
/* загружаем общие функции для клиента и сервера */
|
||||
DOM.jsload(CloudCmd.LIBDIR + 'cloudfunc.js', function() {
|
||||
Events.add("popstate", function(pEvent) {
|
||||
var lPath = pEvent.state + '?json';
|
||||
|
||||
if (pEvent.state) {
|
||||
lPath = pEvent.state + '?json';
|
||||
ajaxLoad(lPath, {nohistory: true});
|
||||
} else
|
||||
route(location.hash);
|
||||
|
||||
return true;
|
||||
});
|
||||
DOM.anyLoadInParallel(files, function() {
|
||||
Listeners = CloudCmd.Listeners;
|
||||
|
||||
changeLinks(CloudFunc.LEFTPANEL);
|
||||
changeLinks(CloudFunc.RIGHTPANEL);
|
||||
Listeners.init();
|
||||
/* загружаем Google Analytics */
|
||||
Listeners.analytics();
|
||||
Listeners.changeLinks(CloudFunc.LEFTPANEL);
|
||||
Listeners.changeLinks(CloudFunc.RIGHTPANEL);
|
||||
|
||||
CloudCmd.KeysPanel = Listeners.initKeysPanel();
|
||||
|
||||
/* устанавливаем переменную доступности кэша */
|
||||
Cache.setAllowed(true);
|
||||
|
|
@ -433,132 +315,16 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* функция меняет ссыки на ajax-овые
|
||||
* @param pPanelID
|
||||
*/
|
||||
function changeLinks(pPanelID){
|
||||
/* назначаем кнопку очистить кэш и показываем её */
|
||||
var lClearcache = DOM.getById('clear-cache');
|
||||
Events.addClick(Cache.clear, lClearcache);
|
||||
|
||||
/* меняем ссылки на ajax-запросы */
|
||||
var lPanel = DOM.getById(pPanelID),
|
||||
a = DOM.getByTag('a', lPanel),
|
||||
|
||||
/* right mouse click function varible */
|
||||
lOnContextMenu_f = function(pEvent){
|
||||
var lReturn_b = true;
|
||||
|
||||
Key && Key.unsetBind();
|
||||
|
||||
/* getting html element
|
||||
* currentTarget - DOM event
|
||||
* target - jquery event
|
||||
*/
|
||||
var lTarget = pEvent.currentTarget || pEvent.target;
|
||||
DOM.setCurrentFile(lTarget);
|
||||
|
||||
if(Util.isFunction(CloudCmd.Menu) ){
|
||||
CloudCmd.Menu({
|
||||
x: pEvent.clientX,
|
||||
y: pEvent.clientY
|
||||
});
|
||||
|
||||
/* disabling browsers menu*/
|
||||
lReturn_b = false;
|
||||
DOM.Images.showLoad();
|
||||
}
|
||||
|
||||
return lReturn_b;
|
||||
},
|
||||
|
||||
/* drag and drop function varible
|
||||
* download file from browser to descktop
|
||||
* in Chrome (HTML5)
|
||||
*/
|
||||
lOnDragStart_f = function(pEvent){
|
||||
var lElement = pEvent.target,
|
||||
lLink = lElement.href,
|
||||
lName = lElement.textContent;
|
||||
|
||||
/* if it's directory - adding json extension */
|
||||
if( DOM.isCurrentIsDir() ){
|
||||
lName += '.json';
|
||||
lLink += '?json';
|
||||
}
|
||||
|
||||
pEvent.dataTransfer.setData("DownloadURL",
|
||||
'application/octet-stream' + ':' +
|
||||
lName + ':' +
|
||||
lLink);
|
||||
},
|
||||
|
||||
lSetCurrentFile_f = function(pEvent){
|
||||
var pElement = pEvent.target,
|
||||
lTag = pElement.tagName;
|
||||
|
||||
if(lTag !== 'LI')
|
||||
do{
|
||||
pElement = pElement.parentElement;
|
||||
lTag = pElement.tagName;
|
||||
}while(lTag !== 'LI');
|
||||
|
||||
DOM.setCurrentFile(pElement);
|
||||
},
|
||||
|
||||
lUrl = CloudCmd.HOST,
|
||||
lLoadDirOnce = CloudCmd.loadDir();
|
||||
|
||||
CloudCmd.refresh = function(pCurrent){
|
||||
var lNEEDREFRESH = true,
|
||||
lPanel = pCurrent && pCurrent.parentElement,
|
||||
lPath = DOM.getCurrentDirPath(lPanel),
|
||||
lLink = CloudFunc.FS + lPath,
|
||||
lNotSlashlLink = CloudFunc.removeLastSlash(lLink),
|
||||
lLoad = CloudCmd.loadDir(lNotSlashlLink, lNEEDREFRESH);
|
||||
lLoad();
|
||||
};
|
||||
CloudCmd.refresh = function(pCurrent){
|
||||
var lNEEDREFRESH = true,
|
||||
lPanel = pCurrent && pCurrent.parentElement,
|
||||
lPath = DOM.getCurrentDirPath(lPanel),
|
||||
lLink = CloudFunc.FS + lPath,
|
||||
lNotSlashlLink = CloudFunc.removeLastSlash(lLink),
|
||||
lLoad = CloudCmd.loadDir(lNotSlashlLink, lNEEDREFRESH);
|
||||
|
||||
/* ставим загрузку гифа на клик*/
|
||||
Events.addClick( CloudCmd.refresh, a[0].parentElement );
|
||||
|
||||
/* start from 1 cous 0 is a path and it's setted up */
|
||||
for(var i = 1, n = a.length; i < n ; i++){
|
||||
/* убираем адрес хоста*/
|
||||
var ai = a[i],
|
||||
lLink = Util.removeStr(ai.href, lUrl),
|
||||
lLoadDir = CloudCmd.loadDir(lLink),
|
||||
/* устанавливаем обработчики на строку
|
||||
* на двойное нажатие на левую кнопку мышки */
|
||||
lLi = ai.parentElement.parentElement;
|
||||
|
||||
/* if we in path - set click event */
|
||||
if (lLi.className === 'path')
|
||||
Events.addClick( lLoadDir, ai );
|
||||
else {
|
||||
Events.add({
|
||||
'click' : DOM.preventDefault,
|
||||
'mousedown' : lSetCurrentFile_f,
|
||||
'contextmenu' : lOnContextMenu_f
|
||||
}, lLi);
|
||||
|
||||
Events.add('dragstart', lOnDragStart_f, ai);
|
||||
|
||||
/* если ссылка на папку, а не файл */
|
||||
if(ai.target !== '_blank'){
|
||||
Events.add({
|
||||
'dblclick' : lLoadDirOnce,
|
||||
'touchend' : lLoadDirOnce
|
||||
}, lLi);
|
||||
}
|
||||
|
||||
lLi.id = (ai.title ? ai.title : ai.textContent) +
|
||||
'(' + pPanelID + ')';
|
||||
}
|
||||
}
|
||||
}
|
||||
lLoad();
|
||||
};
|
||||
|
||||
/**
|
||||
* Функция загружает json-данные о Файловой Системе
|
||||
|
|
@ -681,7 +447,7 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
|
||||
DOM.setCurrentFile(lCurrent);
|
||||
|
||||
changeLinks(pElem);
|
||||
Listeners.changeLinks(pElem);
|
||||
|
||||
if(lName === '..' && lDir !== '/')
|
||||
currentToParent(lDir);
|
||||
|
|
@ -730,11 +496,5 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
return Util.stringifyJSON(lFileTable);
|
||||
}
|
||||
|
||||
Events.addOneTime('load', function(){
|
||||
/* базовая инициализация*/
|
||||
CloudCmd.init();
|
||||
|
||||
/* загружаем Google Analytics */
|
||||
CloudCmd.analytics();
|
||||
});
|
||||
DOM.Events.addOneTime('load', CloudCmd.init);
|
||||
})(Util, DOM);
|
||||
|
|
|
|||
280
lib/client/listeners.js
Normal file
280
lib/client/listeners.js
Normal file
|
|
@ -0,0 +1,280 @@
|
|||
var Util, DOM, CloudCmd;
|
||||
|
||||
(function (Util, DOM) {
|
||||
'use strict';
|
||||
|
||||
CloudCmd.Listeners = new ListenersProto(CloudCmd, Util, DOM);
|
||||
|
||||
function ListenersProto(CloudCmd, Util, DOM){
|
||||
var Cache = DOM.Cache,
|
||||
Events = DOM.Events;
|
||||
|
||||
this.analytics = function(){
|
||||
Events.addOneTime('mousemove', function(){
|
||||
var lUrl = CloudCmd.LIBDIRCLIENT + 'analytics.js';
|
||||
|
||||
setTimeout(function(){
|
||||
DOM.jsload(lUrl);
|
||||
}, 5000);
|
||||
});
|
||||
};
|
||||
|
||||
this.init = function () {
|
||||
appCache();
|
||||
contextMenu();
|
||||
dragndrop();
|
||||
unload();
|
||||
pop();
|
||||
};
|
||||
|
||||
this.initKeysPanel = function() {
|
||||
var i, lButton, lEl,
|
||||
lKeysPanel = {},
|
||||
|
||||
lFuncs =[
|
||||
null,
|
||||
CloudCmd.Help, /* f1 */
|
||||
DOM.renameCurrent, /* f2 */
|
||||
CloudCmd.View, /* f3 */
|
||||
CloudCmd.Edit, /* f4 */
|
||||
DOM.copyCurrent, /* f5 */
|
||||
DOM.moveCurrent, /* f6 */
|
||||
DOM.promptNewDir, /* f7 */
|
||||
DOM.promptDeleteSelected, /* f8 */
|
||||
CloudCmd.Menu, /* f9 */
|
||||
];
|
||||
|
||||
for (i = 1; i <= 9; i++) {
|
||||
lButton = 'f' + i,
|
||||
lEl = DOM.getById('f' + i);
|
||||
lKeysPanel[lButton] = lEl;
|
||||
|
||||
if (i === 1 || i === 3 || i === 4 || i === 9)
|
||||
Events.addOneTime('click', lFuncs[i], lEl);
|
||||
else
|
||||
Events.addClick(lFuncs[i], lEl);
|
||||
}
|
||||
|
||||
lButton = '~',
|
||||
lEl = DOM.getById('~');
|
||||
lKeysPanel[lButton] = lEl;
|
||||
Events.addOneTime('click', CloudCmd.Console, lEl);
|
||||
|
||||
return lKeysPanel;
|
||||
};
|
||||
|
||||
/**
|
||||
* функция меняет ссыки на ajax-овые
|
||||
* @param pPanelID
|
||||
*/
|
||||
this.changeLinks = function(pPanelID){
|
||||
/* назначаем кнопку очистить кэш и показываем её */
|
||||
var lClearcache = DOM.getById('clear-cache');
|
||||
Events.addClick(Cache.clear, lClearcache);
|
||||
|
||||
/* меняем ссылки на ajax-запросы */
|
||||
var lPanel = DOM.getById(pPanelID),
|
||||
a = DOM.getByTag('a', lPanel),
|
||||
|
||||
/* right mouse click function varible */
|
||||
lOnContextMenu_f = function(pEvent){
|
||||
var lReturn_b = true,
|
||||
Key = CloudCmd.Key;
|
||||
|
||||
Key && Key.unsetBind();
|
||||
|
||||
/* getting html element
|
||||
* currentTarget - DOM event
|
||||
* target - jquery event
|
||||
*/
|
||||
var lTarget = pEvent.currentTarget || pEvent.target;
|
||||
DOM.setCurrentFile(lTarget);
|
||||
|
||||
if(Util.isFunction(CloudCmd.Menu) ){
|
||||
CloudCmd.Menu({
|
||||
x: pEvent.clientX,
|
||||
y: pEvent.clientY
|
||||
});
|
||||
|
||||
/* disabling browsers menu*/
|
||||
lReturn_b = false;
|
||||
DOM.Images.showLoad();
|
||||
}
|
||||
|
||||
return lReturn_b;
|
||||
},
|
||||
|
||||
/* drag and drop function varible
|
||||
* download file from browser to descktop
|
||||
* in Chrome (HTML5)
|
||||
*/
|
||||
lOnDragStart_f = function(pEvent){
|
||||
var lElement = pEvent.target,
|
||||
lLink = lElement.href,
|
||||
lName = lElement.textContent;
|
||||
|
||||
/* if it's directory - adding json extension */
|
||||
if( DOM.isCurrentIsDir() ){
|
||||
lName += '.json';
|
||||
lLink += '?json';
|
||||
}
|
||||
|
||||
pEvent.dataTransfer.setData("DownloadURL",
|
||||
'application/octet-stream' + ':' +
|
||||
lName + ':' +
|
||||
lLink);
|
||||
},
|
||||
|
||||
lSetCurrentFile_f = function(pEvent){
|
||||
var pElement = pEvent.target,
|
||||
lTag = pElement.tagName;
|
||||
|
||||
if(lTag !== 'LI')
|
||||
do{
|
||||
pElement = pElement.parentElement;
|
||||
lTag = pElement.tagName;
|
||||
}while(lTag !== 'LI');
|
||||
|
||||
DOM.setCurrentFile(pElement);
|
||||
},
|
||||
|
||||
lUrl = CloudCmd.HOST,
|
||||
lLoadDirOnce = CloudCmd.loadDir();
|
||||
|
||||
/* ставим загрузку гифа на клик*/
|
||||
Events.addClick( CloudCmd.refresh, a[0].parentElement );
|
||||
|
||||
/* start from 1 cous 0 is a path and it's setted up */
|
||||
for(var i = 1, n = a.length; i < n ; i++){
|
||||
/* убираем адрес хоста*/
|
||||
var ai = a[i],
|
||||
lLink = Util.removeStr(ai.href, lUrl),
|
||||
lLoadDir = CloudCmd.loadDir(lLink),
|
||||
/* устанавливаем обработчики на строку
|
||||
* на двойное нажатие на левую кнопку мышки */
|
||||
lLi = ai.parentElement.parentElement;
|
||||
|
||||
/* if we in path - set click event */
|
||||
if (lLi.className === 'path')
|
||||
Events.addClick( lLoadDir, ai );
|
||||
else {
|
||||
Events.add({
|
||||
'click' : DOM.preventDefault,
|
||||
'mousedown' : lSetCurrentFile_f,
|
||||
'contextmenu' : lOnContextMenu_f
|
||||
}, lLi);
|
||||
|
||||
Events.add('dragstart', lOnDragStart_f, ai);
|
||||
|
||||
/* если ссылка на папку, а не файл */
|
||||
if(ai.target !== '_blank'){
|
||||
Events.add({
|
||||
'dblclick' : lLoadDirOnce,
|
||||
'touchend' : lLoadDirOnce
|
||||
}, lLi);
|
||||
}
|
||||
|
||||
lLi.id = (ai.title ? ai.title : ai.textContent) +
|
||||
'(' + pPanelID + ')';
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function appCache() {
|
||||
if (window.applicationCache)
|
||||
Events.add('updateready', function() {
|
||||
var ret = confirm('An update is available. Reload now?');
|
||||
|
||||
if (ret)
|
||||
location.reload();
|
||||
|
||||
}, applicationCache);
|
||||
}
|
||||
|
||||
function contextMenu() {
|
||||
Events.addContextMenu(function(pEvent){
|
||||
CloudCmd.Menu.ENABLED || DOM.preventDefault(pEvent);
|
||||
}, document);
|
||||
}
|
||||
|
||||
function dragndrop() {
|
||||
var panels = DOM.getByClass('panel'),
|
||||
i = 0,
|
||||
n = panels.length,
|
||||
preventDefault = function (event) {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
},
|
||||
toggle = function () {
|
||||
for (i = 0; i < n; i++)
|
||||
DOM.toggleClass(panels[i], 'selected-panel');
|
||||
},
|
||||
onDrop = function (event) {
|
||||
var reader, file, files,
|
||||
dir = DOM.getCurrentDirPath(),
|
||||
load = function(file){
|
||||
return function(event) {
|
||||
var path = dir + file.name,
|
||||
data = event.target.result;
|
||||
|
||||
DOM.RESTfull.save(path, data, CloudCmd.refresh);
|
||||
};
|
||||
};
|
||||
|
||||
preventDefault(event);
|
||||
toggle();
|
||||
|
||||
files = event.dataTransfer.files;
|
||||
|
||||
if (files.length) {
|
||||
n = files.length;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
reader = new FileReader();
|
||||
file = files[i];
|
||||
Events.add('load', load(file), reader);
|
||||
reader.readAsArrayBuffer(file);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Events.add(['dragenter', 'dragleave'], toggle);
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
Events.add('dragover', preventDefault, panels[i]);
|
||||
Events.add('drop', onDrop, panels[i]);
|
||||
}
|
||||
}
|
||||
|
||||
function unload() {
|
||||
DOM.Events.add(['unload', 'beforeunload'], function (pEvent) {
|
||||
var lRet,
|
||||
Key = CloudCmd.Key,
|
||||
lIsBind = Key && Key.isBind();
|
||||
|
||||
if(!lIsBind) {
|
||||
DOM.preventDefault(pEvent);
|
||||
lRet = 'Please make sure that you saved all work.';
|
||||
}
|
||||
|
||||
return lRet;
|
||||
});
|
||||
}
|
||||
|
||||
function pop() {
|
||||
Events.add("popstate", function(pEvent) {
|
||||
var lPath = pEvent.state + '?json';
|
||||
|
||||
if (pEvent.state) {
|
||||
lPath = pEvent.state + '?json';
|
||||
ajaxLoad(lPath, {nohistory: true});
|
||||
} else
|
||||
route(location.hash);
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
})(Util, DOM);
|
||||
Loading…
Add table
Add a link
Reference in a new issue