Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проиграть звук в чате по приходу личного сообщения (https://javascript.ru/forum/misc/26902-proigrat-zvuk-v-chate-po-prikhodu-lichnogo-soobshheniya.html)

asdasd 26.03.2012 23:51

Проиграть звук в чате по приходу личного сообщения
 
Есть список элементов с id ('0private') при появлении элемента с больший id (0-9999999) установить переменную flag в значение ON, теперь скажу что я хочу сделать.. есть чат в котором я хочу сделать звуковое оповещение по приходу личного сообщения... пробую примерно вот так

<script>
flag_audio="on",  max="0private", found=0;

function Update_chat() {  
  $.ajax({ 
       url:  'text.php',
       data: 'update_text=1',
       timeout: '4000',
       type:   'GET',
       success:  function(response)  { 
                   document.getElementById('chat').innerHTML=response;
                    if(flag_audio == "on")  // если выбран переключатель, то проиграть звук
                       play_sound();                    
                }
       });
}

function play_sound() {
    for(var i=0; i < document.getElementById('chat').childNodes.length; i++)   {
       count=i+"private";
         if(max < count && document.getElementById(count) != undefined) {
            max=count;
            found=1;
          }
    }    
    if(found){                      //проверка на то что бы проиграло только 1 раз
      document.getElementById('play_private').play();
      found=0;
        } 
}
</script>

<audio id='play_private'>
   <source src="../sounds/private.ogg" type="audio/ogg" />
</audio>
<div id='chat'>
  <div id='1private'>123</div>
  <div id='2private'>123</div>
  <div id='3private'>123</div>
  <div>some text</div>
  <div>some text2</div>
</div>

asdasd 29.03.2012 15:30

Up :nono:

asdasd 29.03.2012 20:41

В тех статьях упор на воспроизведение(остановку) звука... а у меня проблема вроде с тем как вычислить число элементов внутри 'chat' и как узнать какой из них 'новый'.... да и писал я в надежде что может кто то подскажет более простой и гениальный способ))

asdasd 30.03.2012 09:38

подскажите как сделать выражение такого плана выполняемым:
пробовал даже с toString()

<script>
var a = "111private".match(/\d+/);
var b = "35private".match(/\d+/);

if( a > b ) alert("ok")
</script>

Rootpassword 30.03.2012 10:51

var reg_exp=/(\d+)/;
var a = "111private".match(reg_exp);
var b = "35private".match(reg_exp);
if( (a)&& (b) && ( parseInt(a[1]) > parseInt(b[1]) ) ) {alert("ok");}

asdasd 01.04.2012 12:30

Пытаюсь проверить существование элемента по id вот таким способом

if(document.getElementById(id))

но всегда в ответ null(независимо есть этот элемент на странице или его нет)... хотя писали что должно работать...(или в новых версиях браузеров это уже не работает)

Kolyaj 01.04.2012 13:01

Если null, значит нет элемента.

asdasd 01.04.2012 14:08

Да его не было!! точнее тег был) но с другим id

Rootpassword 01.04.2012 17:44

Цитата:

Сообщение от asdasd
он есть... вставляется посредством ajax на страницу..

В DOM инспекторе посмотрите внимательно. Если null-значит нет.
Также, скрипт проверки или сам элемент - не в фрейме ли?

Kolyaj 01.04.2012 21:39

Значит на момент проверки его нет.


Часовой пояс GMT +3, время: 00:39.