ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

ATS - движок для сайта на javascript =)
  #1  
Старый 12.06.2008, 14:09
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию ATS - движок для сайта на javascript =)

писал из спортивного интереса, но очень хочу найти и исправить все косяки, чтобы можно было использовать, поэтому выкладываю чтобы потестили.

онлайн-версия здесь: http://litprom.890m.com/ast/

сорцы здесь: http://up.giga.su/738058803/ (6.35 кб)

Назначение:
создание в максимально сжатые сроки статичного сайта с удобной поддержкой и расширением.
Альтернатива серверным модульным движкам, SSI, dreamweaver templates.

Суть проекта:
На страницу цепляется основной скрипт.
Появляется возможность создавать простые ссылки, которые заполняют контент страницы содержимым файлов, лежащих на сервере в текстовом формате.

Последний раз редактировалось Дикс; 12.06.2008 в 14:26..
 
Ответить с цитированием

  #2  
Старый 12.06.2008, 15:26
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

я вот че думаю - можно сделать кэширование текстов - сохраняя их в переменные, а затем проверяя их наличие.
как вы считаете - стоит?
 
Ответить с цитированием

  #3  
Старый 12.06.2008, 15:32
Аватар для DIAgen
DIAgen
Познавший АНТИЧАТ
Регистрация: 02.05.2006
Сообщений: 1,191
Провел на форуме:
7364332

Репутация: 1276


По умолчанию

Цитата:
Сообщение от Дикс  
я вот че думаю - можно сделать кэширование текстов - сохраняя их в переменные, а затем проверяя их наличие.
как вы считаете - стоит?
Попробуй это использовать
http://forum.antichat.ru/thread72316.html
 
Ответить с цитированием

  #4  
Старый 12.06.2008, 20:05
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

  1. В функции «ajax» логика получения экземпляра XMLHttpRequest воспроизводится каждый раз.
  2. В переменной contentDiv можно сохранить готовую ссылку на объект ( который <div id="corpse" /> ) вместо строки "corpse".
  3. Имеет смысл навешивать обработчики событий в js коде, а не в html.
  4. Чтобы свести к минимуму вероятность перезаписи переменных, можно создать объект, например, «AST» и хранить их там:
    Код:
    var AST =
    {
      folder: 'pages/',
      ext: 'txt',
      load: function(){ /* код */ }
    };
  5. corpse
Цитата:
Сообщение от Дикс  
я вот че думаю - можно сделать кэширование текстов - сохраняя их в переменные, а затем проверяя их наличие.
как вы считаете - стоит?
По-моему, нет.
 
Ответить с цитированием

  #5  
Старый 12.06.2008, 21:22
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

1, 2 - сделал

Цитата:
3. Имеет смысл навешивать обработчики событий в js коде, а не в html.
не совсем понял.
если у меня будет меню из одних спанов, без онклика и вызова функции,
как я тогда укажу - какой пункт меню, какую страницу открывает?

4 - буду учиться работать с массивами и тоже реализую

5 - ясно. может попробую вот эти способы:
http://forum.antichat.ru/thread72316.html

а ты можешь привести доводы, почему кешировать не стоит?

ПС я знаю что corpse - 'труп'.
это мой маленький кулинарный изыск
 
Ответить с цитированием

  #6  
Старый 12.06.2008, 23:09
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Цитата:
а ты можешь привести доводы, почему кешировать не стоит?
Потому, что браузер кэширует страницы самостоятельно, в том числе те, которые получены "Ajax'ом". Воспроизводить эту логику на JS - задача нетривиальная, если подойти к задаче серьёзно.

lazy-реализация первого пункта. Несколько объёмно:
Код:
function XHR()
{
  var ms =
  [
    'Microsoft.XMLHTTP',
    'MSXML2.XMLHTTP',
    'MSXML2.XMLHTTP.3.0',
    'MSXML2.XMLHTTP.4.0',
    'MSXML2.XMLHTTP.5.0'
  ], i = ms.length, nop = function(){};
  
  if(window.XMLHttpRequest)
  {
    return (XHR = function()
    {
      return new XMLHttpRequest();
    })();
  }
  else if(window.ActiveXObject)
  {
    while(i--)
    {
      try
      {
        return (XHR = function()
        {
          return new ActiveXObject(ms[i]);
        })();
      } catch(e) {}
    }
  }
  
  return (XHR = function(){
    return {
      open: nop,
      send: function()
      {
        this.onreadystatechange();
      },
      readyState: 4,
      onreadystatechange: nop,
      responseText: 'XMLHttpRequest instantiation error'
    };
  })();
};
Цитата:
не совсем понял.
если у меня будет меню из одних спанов, без онклика и вызова функции,
как я тогда укажу - какой пункт меню, какую страницу открывает?
Меню обычно делается как список ссылок. Обработчик навешивается на родительский элемент. При щелчке на ссылке, если не работает js - происходит простой переход по ссылке. Если работает - js отменяет переход и подгружает данные. Техника довольно распространённая, называется event delegation.
Вот пример, не затрагивающий уже существующую разметку:
Код:
function init()
{
  /* ... */
  
  var m = document.getElementById('menu'),
  s = m.getElementsByTagName('span'),
      
  m.addEventListener('click', function(e)
  {
    var name = '';
    switch(e.target || e.srcElement)
    {
      case s[0]:
        name = 'home';
        break;
      case s[1]:
        name = 'installation';
        break;
      case s[2]:
        name = 'contacts';
        break;
      case s[3]:
        name = 'license';
        break;
      default: return true;
    }
    
    loadPage(name);
    (e.preventDefault || function(){ e.returnValue = false; })();
    return false;
  }, false);
};
Можно вместо конструкции switch использовать объект-хеш, в качестве ключей - текст пунктов меню.
P.S. для IE - attachEvent вместо addEventListener.
 
Ответить с цитированием

  #7  
Старый 21.06.2008, 09:26
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

почти со всем справился, но вот этот код не отменяет перехода по ссылке ни в одном браузере:

Цитата:
(e.preventDefault || function(){ e.returnValue = false; })();
return false;
просто e.preventDefault () хорошо отменяет переход в ФФ и опере, а в ИЕ6 не работает.
как в ИЕ убить переход?
я повесил обработчик на теги A.
 
Ответить с цитированием

  #8  
Старый 21.06.2008, 09:59
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Цитата:
Сообщение от Дикс  
почти со всем справился, но вот этот код не отменяет перехода по ссылке ни в одном браузере:



просто e.preventDefault () хорошо отменяет переход в ФФ и опере, а в ИЕ6 не работает.
как в ИЕ убить переход?
я повесил обработчик на теги A.
Это я перемудрил
Код:
if(e.preventDefault)
{
  e.preventDefault();
}
else
{
  e.returnValue = false;
}
return false;
 
Ответить с цитированием

  #9  
Старый 21.06.2008, 10:30
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

http://up.giga.su/713746505/
вот сорцы
ИЕ на этот код ваще не реагирует
 
Ответить с цитированием

  #10  
Старый 21.06.2008, 13:29
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

В IE события, вопреки стандарту, называются не 'click' или 'keyup', а 'onclick', 'onkeyup' и т.д.
В результате:
Код:
attachEvent('onclick', function(e){/*...*/});
Также [ Element ].attachEvent принимает только два параметра. Третий - булево значение - игнорируется.
Далее.
Функция attachEvent переписывает нативную в IE функцию window.attachEvent. Это не плохо, но нежелательно.

Код:
try           {window.xmlHttp=new XMLHttpRequest();}
  catch (e){ try{window.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}
  catch (e){ try{window.xmlHttp=new ActiveXObject("MSXML2.XMLHTTP");}
  catch (e){ try{window.xmlHttp=new ActiveXObject("MSXML2.XMLHTTP.3.0");}
  catch (e){ try{window.xmlHttp=new ActiveXObject("MSXML2.XMLHTTP.4.0");}
  catch (e){ try{window.xmlHttp=new ActiveXObject("MSXML2.XMLHTTP.5.0");}
  catch (e){return false;}}}}}}
Ааааа!

Последний раз редактировалось astrologer; 21.06.2008 в 13:41..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обзор программ для очистки жёсткого диска v1ru$ Soft - Windows 21 17.01.2010 21:07
Как найти качественный контент для сайта baltazar Статьи 4 13.04.2008 01:54
комплекс SEO-master SQL SЕО - тонкости, методы раскрутки 2 19.03.2008 20:22
Лучший софт для Linux _-Ramos-_ Soft - *nix 11 15.01.2008 12:08
Коды silveran Сотовый фрикинг 4 18.10.2005 14:37



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ