Всем привет, fullajax я пользуюсь давно и по ходу разработки у меня возникали сотни вопросов

и на некоторые из них я нашёл ответы и поделюсь с вами, оформлю как небольшое FAQ:
Q: Только что скачал библиотеку, смотрю на файлики и не знаю что делать. Так что же мне делать?))В скаченном архиве будет несколько файлов, но вас должны интересовать всего пару файлов fullajax.js и obf/obf.fullajax.js
первый файл служит скорее всего разработчикам в него можно свободно внести изменения, второй более практичен, сжатый, весит в 3 раза меньше 1 версии.
Вот вы определились с файлом. Подключили его к сайту. Теперь нужно определить какие части сайта будут заменяться.
например ваш сайт имеет такую структуру
html:
-----
header
-----
-----
main content
-----
-----
footer
-----
по идее шапка и подвал полностью статичны, поэтому динамично менятся будет только основной контент, поэтому нужно определить уникальный id для слоя контента например он будет называться fullAjax и в результате получим
html:
-----
header
-----
-----
<div id="fullAjax">main content</div>
-----
-----
footer
-----
Вот наконецто мы определились что будем заменять, теперь передадим параметры скрипту:
javascript:
SRAX.Filter.add({id:'fullAjax', url:'/'});
теперь все ссылки которые идут от корня преобразовываются примерно в :ax:fullAjax:/page
но в параметр url вместо / можно передать любой кусок ссылки, например на сайте у вас все ссылки имеют начало
index.php?url=
значит вы смело можете применить такую конструкцию
javascript:
SRAX.Filter.add({id:'fullAjax', url:'/index.php?url='});
Помните: по запросу на сервер должна отдаваться только та часть контента которую требуется заменить!
Q: Мой скрипт написан на php и я хочу чтобы мой сайт работал как при системе FullAjax так и без неё, как же мне программно определить используется ли сейчас система FullAjax или нет?Ответ прост.
Если на вашем хостинге свободно устанавливаются header'ы то подойдёт такое условие:
php:
$initFullAjax = isset($_SERVER['HTTP_AJAX_ENGINE']) ? true : false;
Если же у вас не прописывается параметр $_SERVER['HTTP_AJAX_ENGINE'], то можно применить другой приём:
добавить к js коду подключения:
javascript:
SRAX.Html.onall('beforerequest', function(ops) {
var p = ops.options.params;
ops.options.params = (p ? p + '&': '') + 'fullajax=yes';
});
И если у вас прописан этот код то будет передаваться на все страницы _REQUEST['fullajax'] = 'yes'
и мы можем скомбинировать условие
php:
$initFullAjax = (isset($_SERVER['HTTP_AJAX_ENGINE']) OR isset($_REQUEST['fullajax'])) ? true : false;
теперь достаточно в нужном месте создать условие
javascript:
if($initFullAjax == true){
send small content only for fullajax
} else {
send all content
}
Примечание: Если вы хотите чтобы динамически менялся <title></title> то вместе с контентом для фулла передавайте такой код
html:
<head><title>New Title</title></head>
Q: Ссылка мне ненравится, получается она сейчас :/#ax:fullAjax:/ссылка, может можно покороче?Да можно. просто добавляем к js:
javascript:
SRAX.linkEqual[':ax:fullAjax:'] = ':';
где fullAjax ваш id элемент!!!
Q: У меня на сайте есть ссылки на сайты партнёров, но они тоже попадают под правила fullajax'а, как исправить?Вначало перед определением фильтров SRAX.Filter.add добавляем такой код:
javascript:
SRAX.Filter.on('beforewrap', function(ops){
return !SRAX.isXss(ops.el.href || ops.el.action);
})
теперь парситься ссылки будут только локальные.
P.S.: функция SRAX.isXss - поддерживается не ниже версии SRAX v.1.0.3 b15+
Q: Как можно запретить парсинг определённых ссылок? Например я не хочу чтобы адресс feedback.html был преобразованЭто реализуется несколькоми способами:
1. к ссылке приписываем парметр ax:wrap="0" и получится чтото вроде
html:
<a href="feedback.html" title="FeedBack" ax:wrap="0">Our FeedBack</a>
2. Добавить глобальное правило, при котором все ссылки будут преобразованы автоматически. Итак в js код добавляем
javascript:
SRAX.Filter.add({url:'feedback.html', type:'nowrap'});
также ссылки можно перечислить
javascript:
SRAX. Filter.add({url:['feedback.html', 'index.html', 'files.html'], type:'nowrap'});
Q: Я захотел переделать загрузчик, сейчас он просто показывается и прячется. Но я хочу чтобы он "таскался" за страницей, как это реализовать?Если даже это не ваш вопрос то всё равно изучите пример, по аналогии можно решить и вашу проблему.
Любую функцию из библиотеки fullajax можно заменить. Для этого там где вы прописали ваши условия работы можно добавить функции. Например сейчас мы будем изменять showLoader - функция отвечает за отображение загрузчика.
Я предоставлю готовый код с некоторыми комментариями
javascript:
SRAX.showLoading = function(show, obj){
var s = obj ? obj.style : 0;
if (s)
{
var scrollTop = document.documentElement.scrollTop;
if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
{
clHeight = document.documentElement.clientHeight;
}
else if (document.body && (document.body.clientWidth || document.body.clientHeight))
{
clHeight = document.body.clientHeight;
}
topOffset = (scrollTop + (clHeight/3))+'px';
s.top = topOffset;
if (show)
{
if (s.visibility) s.visibility = 'visible'; else s.display = 'block';
}
else
{
if (s.visibility) s.visibility = 'hidden'; else s.display = 'none';
}
}
};
Так можно поступить с любой функцией и изменить её под себя, под свои потребности.
Q: На главной fullajax.ru я увидел применение интересных эффектов, хочу также.пример затемнения сайта:
javascript:
SRAX.Effect.add({id:'rumba', start: function(id, request){
var opacity = new Fax.opacity('body-content',1,0.3,10,10);
opacity.afterEnd = request;
},
end: function(id){
new Fax.opacity('body-content',0.3,1,10,10);
}
})
где fullAjax - id слоя который будет затемняться
НО: Чтобы данный эффект работал нужна библиотека эффектов fax
Данную библиотеку я приложил в аттаче. Т.е. вы можете не только использовать fax а также известные аналоги например jquery prototype mootools
Q: Мне нужно передать параметры методом _POST, как?Есть несколько вариантов:
1. Добавляем в инициализацию:
было примерно такое:
javascript:
SRAX.Filter.add({id:'fullAjax', url:'/'});
Станет
javascript:
SRAX.Filter.add({id:'fullAjax', url:'/', method:'post', params:'fullajax=yes'});
передаться параметр fullajax = yes
также можно передать несколько параметров
javascript:
SRAX.Filter.add({id:'fullAjax', url:'/', method:'post', params:['fullajax=yes', 'kruto=yes']});
2 способ:
javascript:
SRAX.Html.onall('beforerequest', function(ops) {
var p = ops.options.params;
ops.options.params = (p ? p + '&': '') + 'fullajax=yes';
});
Вот и все мои накопленные знания

Задавайте свои вопросы в теме постараюсь ответить!