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

Войти

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

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

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



WWW
« Ответ #15 : 08 Июнь 2007, 21:01:49 »

Снова проблема: со стороны сервера я инициировать соединение не могу, следовательно необходимо периодически "пинать" сервер клиентом на наличие новых сообщений. Нашёл фукнцию setTimeout(), но не понимаю как её заставить в цикле прыгать. Просто для того, чтобы зациклить эту функцию надо создать фукнцию в фукнции, но тогда извне не пробиться к внутренней функции %)
Записан

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


« Ответ #16 : 08 Июнь 2007, 22:26:22 »

пусть некая функа, допустим updatePage, устанавливает с помощью setTimeout вызов самой себя (updatePage) через определенное время.
Код:
function updatePage(){
    alert("updatePage")
    setTimeout(updatePage,1000)

}
updatePage()
ЗЫ. И еще, надо проверять пришел ли ответ, прежде чем посылать повторный запрос.
« Последнее редактирование: 08 Июнь 2007, 22:31:41 от DenVdmj » Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #17 : 09 Июнь 2007, 00:01:06 »

Не могу найти аналог str_replace, т.е. функции для замены подстроки в строке.
Записан

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


« Ответ #18 : 09 Июнь 2007, 00:14:58 »

Код:
alert("erterte{ewrtewrt}wertwert[wwerter]".replace(/([{}\[\]])/g, "\n$1\n") )
Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #19 : 09 Июнь 2007, 00:21:08 »

Я в рег.выражениях не силён. Можно пример вида: str=replace('str1','str2'); сделать работающим?
Записан

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


« Ответ #20 : 09 Июнь 2007, 00:28:02 »

Угу.
Код:
str1 = "<<ASD>>"
str2 = '-=NEW STR=-'
alert("qwe<<ASD>>zxc".replace( str1, str2))


ЗЫ

или без учета регистра:

Код:
str1 = new RegExp('<<<ASD>>>','i')
str2 = ' -=NEW=- '
alert('qwe<<<asd>>>zxc'.replace(str1, str2))
« Последнее редактирование: 09 Июнь 2007, 00:37:14 от DenVdmj » Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #21 : 09 Июнь 2007, 00:39:28 »

Блин, мой пхпешный мозг не в силах принять, что точке - это не соединитель строк %)
Спасибо за пример - очень помог!
По сути, осталось написать серверную часть о облагородить клиента. Эта ночь у меня свободна, так что к утру могу уже наверно выложить исходники Улыбка
Записан

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


« Ответ #22 : 09 Июнь 2007, 00:46:18 »

Цитировать
Блин, мой пхпешный мозг не в силах принять, что точке - это не соединитель строк %)
Мой мозг перловый, там тоже точка -- конкатенация строк, но javaScript лублу, на самом деле очень прикольный язык ))
А в примере 'some string'.methodName() -- 'some string' будет объектом класса String.
« Последнее редактирование: 09 Июнь 2007, 00:48:21 от DenVdmj » Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



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

БЛИН, только всё обернул в норм упаковку, как backside не захотел сессии находить. Что за тупость? Причём на форуме говорится, что всё норм находит сессию. Голова идёт кругом, к утру готово не будет, т.к. маленькие гномики, которые обычно всё за меня делают пока я сплю - сегодня съедены за обедом.
Записан

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


« Ответ #24 : 09 Июнь 2007, 02:30:35 »

Цитировать
БЛИН, только всё обернул в норм упаковку,
Разверни обратно )))
Цитировать
Голова идёт кругом, к утру готово не будет, т.к. маленькие гномики, которые обычно всё за меня делают пока я сплю - сегодня съедены за обедом.
Гномики решают, адназначна ))
Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #25 : 10 Июнь 2007, 12:40:21 »

Мозг хавается уже второй день. Никак не могу найти причину возникновения сей фекалии:
Цитировать
Ошибка: [Exception... "'dataReady(): unknown pending id: 0' when calling method: [nsIOnReadyStateChangeHandler::handleEvent]"  nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)"  location: "<unknown>"  data: no]
Чувствую, что JS ошибка, но где и что никак не въезжаю %)

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

Кстати, как открыть JS новое окно, чтобы оно не считалось всплывающим и не длокировалось, т.е. так же,как и на этом форуме при приходе нового сообщения открывается окно с предложением открыть новое окно (сорри за тавталогию) с личкой.
Yt предлагать:
Код:
if(confirm(result["confirm_text"])){window.open(result["confirm_url"],"x3", "toolbar=1,location=1,status=1,menubar=1,scrollbars=2,resizable=1");}
И ещё: как проверить, не открыто ли диалоговое окошечко confirm?
« Последнее редактирование: 10 Июнь 2007, 13:42:02 от Nikitian » Записан

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


« Ответ #26 : 10 Июнь 2007, 20:47:56 »

Хз. Можно создавать div и позиционировать его по центру экрана. но это не окно. А как сделано здесь ? кинь пустую личку, чтоб глянуть.
Записан
Redisko
Новичок
*
Пол: Мужской
Сообщений: 46


« Ответ #27 : 10 Июнь 2007, 22:17:27 »

Накидал по быстрому из кусков:
Код:
<style type="text/css">
.confirm{
    display:block;
    position: absolute;
    border:1px solid red;
    background:#EEE;
    color:#789;
    padding:30px 10px 30px 10px;
    margin-left: 30%;
}
.confirm{
    top: expression( QWERTY=1, document.body.scrollTop + 10 )
}
body>.confirm[class="confirm"] {
    top:40px;
    position:fixed;
}
.btnOK, .btnCancel {
    border:1px solid #999;
    width:100px;
    padding:2px;
    margin:10px;
    text-align:center;
    font:normal 10px/150% Verdana;
    cursor:default
}
</style>

<script>
if(window.Node && window.Node.prototype){
    if(!Node.prototype.attachEvent)
        Node.prototype.attachEvent=function(e,f,c){
            var self = this;
            return self.addEventListener(e.substr(2), f, false); // was true--Opera7b workaround!
        }

}
function buildTree(tag,at,c){
    var i, a, p, elem = document.createElement(tag)
    if(!elem) return false
    for(a in at) switch(a) {
        case 'c': elem.className = at[a]; break
        case 's': for(p in at[a]) elem.style[p]=at[a][p]; break
        case 'p': for(p in at[a]) elem.attachEvent(p,at[a][p]); break
        case '#': elem.appendChild(document.createTextNode(at[a])); break
        default: for(p in at[a]) elem.setAttribute(at[a][p]); break
    }
    if(c)for(i=0;p=c[i];i++)elem.appendChild(buildTree(p[0],p[1],p[2]))
    return elem
}


onload = function(){

    var elem = buildTree(
        'center', {'c':'confirm', '#':'Вам приватное сообщение, открыть в новом окне?'},
            [
                ['div',{'c':'btnOK','#':'Да','p':{
                    'onclick':function(){
                        alert("Yes");
                        window.open('http://adsl.kirov.ru/forum/index.php/topic,12862.735.html',
                                    'requested_popup',
                                    'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,width=600,height=500,resizable=no'
                        )
                }}}],
                ['div',{'c':'btnCancel','#':'Нет','p':{'onclick':function(){alert("No")}}}]
            ]
    )

    document.getElementsByTagName('body')[0].appendChild(elem)
}


</script>


Но проще не создавать все это динамически, а сделать заранее в html нужный блок оформленный окошком и показывать его в определенный момент.

ЗЫ.
Личка пришла, но никаких попапов нет, лишь вверху страницы стандартное:
Цитировать
Здравствуйте, DenVdmj
у Вас 2 сообщений 1 новое.
браузер Опера
« Последнее редактирование: 10 Июнь 2007, 22:21:39 от DenVdmj » Записан
Nikitian
Ветеран
*****
Пол: Мужской
Сообщений: 1342



WWW
« Ответ #28 : 10 Июнь 2007, 22:50:47 »

ЗЫ.
Личка пришла, но никаких попапов нет, лишь вверху страницы стандартное:браузер Опера
Надо галочку взвести "Выводить предупреждение при появлении нового личного сообщения?" в "Настройки личных сообщений" - профиль. Тогда появляется confirm при приходе нового сообщения.

Код у тебя какой-то уж очень страшный. Должно быть проще Непонимающий
Записан

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


« Ответ #29 : 10 Июнь 2007, 23:12:37 »

Цитировать
Код у тебя какой-то уж очень страшный. Должно быть проще
Проще -- в html'е, как писал. сам код -- это только onload,  buildTree универсальная функа. остальное -- из DOMextensions.js. это все костыли для совместимости браузеров.
Записан
Страниц: 1 [2] 3 4  Все   Вверх
Печать
ADSL.Kirov.RuСообществаПрограммированиеВеб-программированиеТема: Разработка чата на JS+PHP
Перейти в: