jsBuffers - конструкция JavaScript, изменяющая содержимое одного скрипта из другого.
Изначально создаётся скрипт-буфер с пустыми определениями:
<script id="jsBuffer" type="text/javascript">
<!-- //
var jsBuff = new Array();
var jsOptBackground;
// -->
</script>
В данном случае он содержит пустой массив, пустой указатель размера массива и одну пустую опцию.
Определяем тип браузера.
<script type="text/javascript">
<!-- //
ie=document.all?1:0;
dom=(document.getElementById && !ie)?1:0;
nn4=(document.layers && !dom)?1:0;
// -->
</script>
Далее в другом скрипте находится функция управляющая свойством src этого буфера в IE, или добавление нового скрипта в Mozilla:
<script type="text/javascript">
<!-- //
function jsLoadBuffer(jsURL)
{
if (ie) document.all['jsBuffer'].src = jsURL;
if (dom)
{
var AddScr = document.createElement('script');
AddScr.src = jsURL;
document.body.appendChild (AddScr);
}
if (nn4) alert('Под шкафом без DOM не работает!');
}
// -->
</script>
При вызове этой функции происходит изменение скрипта jsBuffer, например:
<a href="#" onclick="jsLoadBuffer('Js/books.js');">Книги</a>
(Настоятельно рекомендую применять именно пустую ссылку под событие onclick. Многократно на этом застревало написание страниц.)
В данном примере файл books.js содержит уже непустые определения:
//books.js
var jsBuff = new Array('...','...','...','...','...');
var jsOptBackground='URL-image';
//end
Эти определения заменяют пустые, а что делать с этими значениями - это уже дело вкуса. Одно могу сказать точно - используя этот буфер можно значительно сокращать трафик, изменяя на странице только некоторые элементы и, по возможности, никуда с неё не уходя.
Например:
<script type="text/javascript">
<!-- //
function jsPasteBuffer()
{
var jsStek=('<table background="'+jsOptBackground+'"><tr><td>');
for(i=0; i{
jsStek += (jsBuff[i]+' ');
}
jsStek += ('</td></tr></table>');
if (ie)
{
document.all['jsContent'].innerHTML = jsStek;
}
if (dom)
{
document.getElementById('jsContent').innerHTML = jsStek;
}
}
// -->
</script>
Полная процедура будет выглядеть след. образом.
Например:
<script type="text/javascript">
<!-- //
function jsLoadContent(jsLink)
{
jsLoadBuffer(jsLink);
jsPasteBuffer();
}
// -->
</script>
Вот собственно и всё. ПРИМЕР.
PS: В Mozilla действует с двойного клика. В NN без DOM не рабртает.
"Удачного всем соединения, без особых эмоций, без имени."
Сайт управляется системой
uCoz