Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.06.2018, 18:27
Новичок на форуме
Отправить личное сообщение для Riroy Посмотреть профиль Найти все сообщения от Riroy
 
Регистрация: 17.06.2018
Сообщений: 3

Звук в чате.
Добрый день. Недавно начал увлекаться js. И тут возникла одна проблемка: есть чат, рабочий, но я не знаю, как сделать так, что бы при появлении нового сообщения в чате издавался звук.

Надеюсь на помощь.Заранее спасибо.

(При желании , нужен еще checkbox, что бы включать/выключать данную возможность.)
Ответить с цитированием
  #2 (permalink)  
Старый 17.06.2018, 19:56
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<button>Клик</button> <input type="checkbox" checked>
<script>
		var chek = document.querySelector('input');
		var audio = new Audio(['https://nvdx.ru/vega.mp3']);
		document.querySelector('button').onclick =()=> chek.checked && audio.play();
</script>

Последний раз редактировалось j0hnik, 17.06.2018 в 20:03.
Ответить с цитированием
  #3 (permalink)  
Старый 17.06.2018, 20:21
Новичок на форуме
Отправить личное сообщение для Riroy Посмотреть профиль Найти все сообщения от Riroy
 
Регистрация: 17.06.2018
Сообщений: 3

Сообщение от j0hnik Посмотреть сообщение
<button>Клик</button> <input type="checkbox" checked>
<script>
		var chek = document.querySelector('input');
		var audio = new Audio(['https://nvdx.ru/vega.mp3']);
		document.querySelector('button').onclick =()=> chek.checked && audio.play();
</script>
Большое спасибо. Но это немного не то , что мне нужно. Мне надо , когда в чате появляется новый div , то издается звук.

//допустим , id чата #chatroom
Ответить с цитированием
  #4 (permalink)  
Старый 17.06.2018, 20:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Riroy,
найдите функцию добаления сообщений и туда поставьте audio.play();
Ответить с цитированием
  #5 (permalink)  
Старый 18.06.2018, 11:52
Новичок на форуме
Отправить личное сообщение для Riroy Посмотреть профиль Найти все сообщения от Riroy
 
Регистрация: 17.06.2018
Сообщений: 3

Сообщение от рони Посмотреть сообщение
Riroy,
найдите функцию добаления сообщений и туда поставьте audio.play();
Я пишу поверхностный код. Исходников у меня нет, они зашифрованы
Ответить с цитированием
  #6 (permalink)  
Старый 18.06.2018, 16:58
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

j0hnik,
new Audio([URLString]) квадратные скобки это необязательный параметр, не массив.

Riroy,
MutationObserver, но надо знать вашу иерархию элементов.
<div id="chat">Messages:</div>
<script>
var target = document.getElementById('chat');
var observer = new MutationObserver(function (mutationsList) {
    //console.log(mutationsList);
    for (var mutation of mutationsList) {
        if (mutation.addedNodes.length) {
            audio.play();
            break;
        }
    }
});
var audio = new Audio('https://nvdx.ru/vega.mp3');
audio.addEventListener('canplay', function () {
    observer.observe(target, { childList: true });
});

function fakeServer(t, i, ms) {
    var id = setInterval(function () {
        if (i) t.textContent += i--;
        else clearInterval(id);
    }, ms);
}
fakeServer(target, 5, 5000);
</script>

Последний раз редактировалось Rise, 18.06.2018 в 17:58.
Ответить с цитированием
  #7 (permalink)  
Старый 18.06.2018, 17:01
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Rise,
Проaбгрейдим

Сообщение от Riroy
они зашифрованы



<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	.time{
		margin-right: 10px;
		color: #999;
	}
	.mess{
		color: #555;
		margin-left: 10px;
	}
	.name{
		display: inline-block;
		width: 105px;
	}
</style>
</head>
<body>

	<div id="chatroom"></div>

	<script>
		var room = document.querySelector('#chatroom');
		var observer = new MutationObserver(function(mutations) {
			mutations.forEach(mutation=>{
				var audio = new Audio('http://boobooka.com/wp-content/uploads/2016/09/ICQ_-_Zvuk_as_ki.mp3');
				audio.play();
			});
		});

		observer.observe(room, {childList: true});



		//Эмулятор чата
		var rnd = (min, max) => Math.floor(Math.random() * (max - min)) + min;

		var chat = ['Приветики','Как делишки?','Вы все г***', 'Я тебя люблю!', 'Ты че братан попутал?', 'Как погодка?', 'ля-ля-ля ля-ля-ля'],
		nameUs = ['KiskaLove','100%Малышка','MafiaBoY', 'Spiker'],
		color = ['red','green','blue','cyan'];

		(mess=()=>{
			var rn = rnd(0, nameUs.length);
			room.insertAdjacentHTML('beforeend', `<div><span class="time">${new Date().toLocaleString('ru', {
				hour: '2-digit',
				minute: '2-digit',
				second: '2-digit'
			})}</span> <span class="name" style="color:${color[rn]}">${nameUs[rn]}:</span> <span class="mess">${chat[rnd(0, chat.length)]}</span></div>`);
			setTimeout(mess,rnd(500,3000));
		})();
	</script>
</body>
</html>

Последний раз редактировалось j0hnik, 18.06.2018 в 17:06.
Ответить с цитированием
  #8 (permalink)  
Старый 18.06.2018, 17:12
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

есть ли способ не создавать новое аудио каждый раз?
но чтобы при частом нажатии поведение было такое же?
<button>Клик</button> <input type="checkbox" checked>
<script>
	var chek = document.querySelector('input');
	document.querySelector('button').onclick =()=> {
	var audio = new Audio('https://nvdx.ru/vega.mp3');
chek.checked && audio.play();
};
</script>
Ответить с цитированием
  #9 (permalink)  
Старый 18.06.2018, 18:06
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Добавил еще проверку, ведь нам удаление не нужно же.

j0hnik,
Объявить глобально и всё. Крутой чат

Последний раз редактировалось Rise, 18.06.2018 в 18:13.
Ответить с цитированием
  #10 (permalink)  
Старый 18.06.2018, 18:50
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от Rise
Объявить глобально и всё
Так пока предыдущий не воспроизведется новый не хочет играть =(

<button>Клик</button> <input type="checkbox" checked>
<script>
	var chek = document.querySelector('input');
	document.querySelector('button').onclick =()=> {
	var audio = new Audio('https://nvdx.ru/vega.mp3');
chek.checked && audio.play();
};
</script>



<button>Клик</button> <input type="checkbox" checked>
<script>
	var chek = document.querySelector('input');
	var audio = new Audio('https://nvdx.ru/vega.mp3');
	document.querySelector('button').onclick =()=> {
chek.checked && audio.play();
};
</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Flash реклама и звук newperson Flash 2 30.03.2016 08:53
Как проиграть звук на сайте один раз за сеанс. tuchkovo-auto Общие вопросы Javascript 3 21.05.2014 11:13
Звук при нажатие на ссылку! Сергей123 Элементы интерфейса 3 05.11.2013 16:50
Звук на сайте с помощю JavaScript romms Элементы интерфейса 3 09.11.2009 21:46