Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти

 
Расширенный поиск

800737 Сообщений в 11248 Тем- от 88235 Пользователей - Последний пользователь: elait

25 Август 2019, 07:25:03
ADSL.Kirov.RuСообществаПрограммированиеВеб-программированиеТема: Разработка чата на JS+PHP
Страниц: [1] 2 3 4  Все   Вниз
Печать
Автор Тема: Разработка чата на JS+PHP  (Прочитано 1901 раз)
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« : 04 Июнь 2007, 17:51:03 »

Короче, требуют пользователи простейший чат. Решил сделать именно на этих технологиях.
Для уменьшения трафа думаю загружать только последние сообщения. Хочу без перезагрузки страницы и столкнулся с проблемой. Я плохо знаю JavaScript и не знаю как получить текст страницы в строковую переменную. ЛУчше в массив, но можно и в одну переменную, т.к. нужно очень просто. Поможите кто чем может, лучше в виде function gettext($url){....}
Обещаю финальную версию выложить здесь, мало ли кому понадобится ещё.

Вот нашёл такую реализацию, но она не пашет Грустный
Код:
<script>
var Try = {
  these: function() {
    for (var i = 0; i < arguments.length; i++) {
      try {
        return arguments[i]();
      } catch (e) {}
    }
  }
};
var Ajax = {
  getTransport: function() {
    return Try.these(
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
      function() {return new ActiveXObject('Microsoft.XMLHTTP')},
      function() {return new XMLHttpRequest()}
    ) || false;
  },

  getContent: function(url) {
    var req = this.getTransport();
    try {
      req.open('get', url, false);
      req.send(null);
    } catch (e) {
      return '';
    }
    return req.responseText;
  }
};

function getpage(url){
a=document.getElementById('btn').value;
a='';
x=Ajax.getContent(url);
y=document.getElementById('chat').value;
if(x==''){y=y+'!!!';}
else{y=y+x+'???';}
a='!';
}
</script><input id="chat" /><input type="button" id="btn" onclick="getpage('http://www.site.com/get_page.htm');" value="Загрузить" />
« Последнее редактирование: 04 Июнь 2007, 18:54:26 от Nikitian » Записан

В отъезде бессрочно
Не вынесла душа поэта
Устал залатывать он брешь
Орать«Карету мне,карету!»
Не поваляешь–не поешь
Кто чище лучше всех на свете
Тот всех больнее и мертвей
А кто румяней и белей,
Тот всех живее и подлей
Redisko
Новичок
*
Пол: Мужской
Сообщений: 46


« Ответ #1 : 07 Июнь 2007, 19:22:35 »

Короче, требуют пользователи простейший чат. Решил сделать именно на этих технологиях.
Для уменьшения трафа думаю загружать только последние сообщения. Хочу без перезагрузки страницы и столкнулся с проблемой. Я плохо знаю JavaScript и не знаю как получить текст страницы в строковую переменную. ЛУчше в массив, но можно и в одну переменную, т.к. нужно очень просто. Поможите кто чем может, лучше в виде function gettext($url){....}

Есть хорошая библиотечка для работы с ajax от Дмитрия Котерова, Subsys_JsHttpRequest. Пример который идет в описалове к либе у меня заработал сразу, залил его сюда: "/Programming/PHP/ajax" ("ajax-test(2007-06-07).rar" - пример заюза, "Subsys_JsHttpRequest_Js_5.rar" либа пятой версии)

Обязательно сходи на http://forum.dklab.ru/ посмотри есть ли более свежие версии, так просто почитай )) там есть темка где идет обсуждение либы, тоже будет очень полезно.
ЗЫ, да чуть не забыл самое интересное -- либа отличается от остальных тем, что может в крайних случаях работать без поддержки XMLHttpRequest в браузере ))
Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #2 : 07 Июнь 2007, 19:41:02 »

Спаибо, изучаю.....
Записан

В отъезде бессрочно
Не вынесла душа поэта
Устал залатывать он брешь
Орать«Карету мне,карету!»
Не поваляешь–не поешь
Кто чище лучше всех на свете
Тот всех больнее и мертвей
А кто румяней и белей,
Тот всех живее и подлей
Redisko
Новичок
*
Пол: Мужской
Сообщений: 46


« Ответ #3 : 07 Июнь 2007, 21:51:21 »

Если есть вопросы по самой жаваскрипт, dom, и проч -- спрашивай.
Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #4 : 07 Июнь 2007, 22:09:27 »

Пока разбираюсь в Котеровской либе. Пытаюсь врубиться как оно работает и как это использовать и оптимизировать.
Записан

В отъезде бессрочно
Не вынесла душа поэта
Устал залатывать он брешь
Орать«Карету мне,карету!»
Не поваляешь–не поешь
Кто чище лучше всех на свете
Тот всех больнее и мертвей
А кто румяней и белей,
Тот всех живее и подлей
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #5 : 07 Июнь 2007, 22:32:57 »

Если есть вопросы по самой жаваскрипт, dom, и проч -- спрашивай.
Как перемотать div вниз? Я сделал так:
Код:
document.getElementById('result').scroll=bottom;
document.getElementById('result').scroll=bottom;
................................
<div id="result" style="height:200px;width:600px;overflow: auto;">
В FireFox работает всё отлично (именно с двумя строчками scroll=bottom, т.к. если одну, то последняя строка не доматывается). Opera&IE не хотят перематывать вообще. Как?
Записан

В отъезде бессрочно
Не вынесла душа поэта
Устал залатывать он брешь
Орать«Карету мне,карету!»
Не поваляешь–не поешь
Кто чище лучше всех на свете
Тот всех больнее и мертвей
А кто румяней и белей,
Тот всех живее и подлей
Redisko
Новичок
*
Пол: Мужской
Сообщений: 46


« Ответ #6 : 08 Июнь 2007, 00:12:22 »

Вообче странный код, scroll -- не свойство нода, а метод window.

Как определить нужное значение для scrollTop сразу не скажу, можно сунуть заведомо большее:
Код:
document.getElementById('result').scrollTop=100000000

Цитировать
Пытаюсь врубиться как оно работает и как это использовать и оптимизировать.
лучче не пытайся. Если почитаешь форум дкЛаб, увидишь какие неуловимые глюки порой встречаются. Либа меньше при той-же функциональности весить вряд ли будет, юзай как есть. 13284 байт -- это не много за удобство.
« Последнее редактирование: 08 Июнь 2007, 00:40:46 от DenVdmj » Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #7 : 08 Июнь 2007, 08:30:27 »

Блин, фигня какая-то: то работает отлично тестовый скрипт, то вообще не хочет ничего делать! Сейчас просто копирую тестовый скрипт подсчёта мд5, изменяю пути к библиотекам и ... он не работает! Ппц Грустный
Записан

В отъезде бессрочно
Не вынесла душа поэта
Устал залатывать он брешь
Орать«Карету мне,карету!»
Не поваляешь–не поешь
Кто чище лучше всех на свете
Тот всех больнее и мертвей
А кто румяней и белей,
Тот всех живее и подлей
Redisko
Новичок
*
Пол: Мужской
Сообщений: 46


« Ответ #8 : 08 Июнь 2007, 09:36:41 »

проверяй пути, смотри не напутал урлы с путями. все должно работать.
кстати, раз взялся за js, поставь Firebug для лисы и отладочную консоль для Оперы, если не стоят еще:
/Programming/Web/BrowserConsole/
для оперы открыть "Tools - Opera Developer Community.mht" и кликнуть по кнопке-сцылке "Developer Console"
Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #9 : 08 Июнь 2007, 10:54:37 »

WebDeveloper стоит на Фоксе. Там есть консоль ошибок JS.

Что-то конкретно заглючило у меня - даже пример на сайте dklab.ru не работает %)
Такое ощущение, что где-то кэш юзается с ошибкой, но вот что странно: кэш привязывается к конкретному файлу, а не к любому файлу с подобным именем...

Короче глюк как неожиданно появился - так и неожиданно исчез



Далее вопросы по JS:
Как сделать onkeydown="if(key==return)doLoad(this.form.mess.value);" - на форме. doLoad - функция. Короче, она должна исполняться при нажатии Enter.
Фишка с document.getElementById('result').scrollTop=100000000 работает некорректно, т.е. недоматывает 1 строчку Грустный
« Последнее редактирование: 08 Июнь 2007, 17:11:43 от Nikitian » Записан

В отъезде бессрочно
Не вынесла душа поэта
Устал залатывать он брешь
Орать«Карету мне,карету!»
Не поваляешь–не поешь
Кто чище лучше всех на свете
Тот всех больнее и мертвей
А кто румяней и белей,
Тот всех живее и подлей
Redisko
Новичок
*
Пол: Мужской
Сообщений: 46


« Ответ #10 : 08 Июнь 2007, 18:25:05 »

Цитировать
Как сделать onkeydown="if(key==return)doLoad(this.form.mess.value);" - на форме. doLoad - функция. Короче, она должна исполняться при нажатии Enter.
Код:

    onsubmit="doLoad(this.userText.value); return false"

userText -- айдишник и имя поля ввода
Цитировать
Фишка с document.getElementById('result').scrollTop=100000000 работает некорректно, т.е. недоматывает 1 строчку
Гы, странно, у мну все везде работает. На скроллируемом диве стилей нет, что в нем самом?
« Последнее редактирование: 08 Июнь 2007, 18:27:40 от DenVdmj » Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #11 : 08 Июнь 2007, 19:28:06 »

Код:
onsubmit="doLoad(this.userText.value); return false"
Не катит Грустный
Чувствую, что надо именно Enter отлавливать.
Код:
<form action="javascript:void(0);" onsubmit="doLoad(this.form.mess.value);return false" method="post">
На скроллируемом диве стилей нет, что в нем самом?
Есть стили:
Код:
<div id="result" style="height:200px;width:600px;overflow-y:auto;word-wrap:break-word;">
Позже всё в CSS перекину.
Да, ещё в Фоксе не работает word-wrap:break-word; - хз почему...
« Последнее редактирование: 08 Июнь 2007, 19:54:12 от Nikitian » Записан

В отъезде бессрочно
Не вынесла душа поэта
Устал залатывать он брешь
Орать«Карету мне,карету!»
Не поваляешь–не поешь
Кто чище лучше всех на свете
Тот всех больнее и мертвей
А кто румяней и белей,
Тот всех живее и подлей
Redisko
Новичок
*
Пол: Мужской
Сообщений: 46


« Ответ #12 : 08 Июнь 2007, 20:00:20 »

В смысле не катит? почему? можно вешать onkeypress:

Код:

 window.onload=function(){
     document.getElementsByTagName('form')[0].onkeypress = function(e){
         13 == (window.event ? window.event : e).keyCode && doLoad(this.userText.value)
     }
 }


но onsubmit по любому должен возвращать false

Цитировать
Есть стили:

Если стили отрубить что происходит?

ЗЫ. В опера (9.21) overflow-x:auto вапче не пашет. ставь overflow:auto

ЗЗЫ
Цитировать
Чувствую, что надо именно Enter отлавливать.
Что-то не работает или в чем причина?
Цитировать
Да, ещё в Фоксе не работает word-wrap:break-word; - хз почему...
Этого похоже нет в CSS2 Specification, щас глянул, и overflow-x тоже нет. поэтому если очень надо:
для мсие:
div{ overflow-x:auto; }
далее для нормальных браузеров:
body>div{ overflow:auto; }
« Последнее редактирование: 08 Июнь 2007, 20:14:43 от DenVdmj » Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #13 : 08 Июнь 2007, 20:18:09 »

В опера (9.21) overflow-x:auto вапче не пашет. ставь overflow:auto
Просто я хочу по вертикали скролинг сделать, а по горизонтали перенос.
Если стили отрубить что происходит?
Задать размеры дива не могу и просто текстовые строчки появляются

Код:
window.onload=function(){
     document.getElementsByTagName('form')[0].onkeypress = function(e){
         13 == (window.event ? window.event : e).keyCode && doLoad(this.userText.value)
     }
 }
Сработало как надо!
« Последнее редактирование: 08 Июнь 2007, 20:22:34 от Nikitian » Записан

В отъезде бессрочно
Не вынесла душа поэта
Устал залатывать он брешь
Орать«Карету мне,карету!»
Не поваляешь–не поешь
Кто чище лучше всех на свете
Тот всех больнее и мертвей
А кто румяней и белей,
Тот всех живее и подлей
Redisko
Новичок
*
Пол: Мужской
Сообщений: 46


« Ответ #14 : 08 Июнь 2007, 20:27:36 »

Цитировать
Просто я хочу по вертикали скролинг сделать, а по горизонтали перенос.
Так этож не pre, перенос по словам и так работает. overflow:auto должен как  надо работать.

Цитировать
Сработало как надо!
да, тут лучче короче записать
Код:
13 == (window.event || e).keyCode && doLoad(this.userText.value)
« Последнее редактирование: 08 Июнь 2007, 20:33:39 от DenVdmj » Записан
Страниц: [1] 2 3 4  Все   Вверх
Печать
ADSL.Kirov.RuСообществаПрограммированиеВеб-программированиеТема: Разработка чата на JS+PHP
Перейти в: