benutzen |
23.05.2016 20:02 |
Удаление элемента документа по таймеру
Здравсвуйте , есть программа для стрима , называется BrоСhаt, которая собирает сообщения от зрителей с нескольких чатов и помещает их в один документ , который и отображается.
Как сделать так чтобы сообщения удалялись из документа если никто ничего не писал определенное время?
html
Код:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="transparent/transparent.css">
</head>
<script>
var MESSAGE = "message";
var STATISTIC = "statistic";
var userScroll = false;
function onWheel(event)
{
event = event || window.event;
var delta = -( event.deltaY || event.detail || event.wheelDelta );
userScroll = document.body.scrollTop + window.innerHeight + delta < document.body.scrollHeight;
document.body.scrollTop = document.body.scrollTop + delta;
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
}
function scrollToBottom()
{
if( userScroll )
return;
document.body.scrollTop = document.body.scrollHeight;
}
function onStatisticReceived( service, value )
{
}
function onNewMessage( service, nickName, message, type )
{
var serviceElem = document.createElement( "img" );
serviceElem.className = service;
var serviceBlock = document.createElement( "div" );
serviceBlock.className = "service";
serviceBlock.appendChild( serviceElem );
var nickBlock = document.createElement( "div" );
nickBlock.className = "nick";
nickBlock.innerHTML = nickName + "<span class='separator'>: </span>";
var headerkBlock = document.createElement( "div" );
headerkBlock.className = "header";
headerkBlock.appendChild( serviceBlock );
headerkBlock.appendChild( nickBlock );
var messageBlock = document.createElement( "div" );
messageBlock.className = "message";
messageBlock.innerHTML = message;
var messageBox = document.createElement( "div" );
messageBox.className = "messagebox";
messageBox.appendChild( headerkBlock );
messageBox.appendChild( messageBlock );
var messageType = document.createElement( "div" );
messageType.className = type;
messageType.appendChild( messageBox );
var messagesList = document.getElementById( "messagesList" );
if( type != "" )
{
messagesList.appendChild( messageType );
}
else
{
messagesList.appendChild( messageBox );
}
scrollToBottom();
}
</script>
<body>
<div id="messagesList"></div>
<script>
setInterval( scrollToBottom, 500 );
var messagesList = document.getElementById( "messagesList" );
if (messagesList.addEventListener)
{
if ('onwheel' in document)
{
// IE9+, FF17+, Ch31+
messagesList.addEventListener("wheel", onWheel);
}
else if ('onmousewheel' in document)
{
// устаревший вариант события
messagesList.addEventListener("mousewheel", onWheel);
}
}
</script>
<!--START_BROWSER_CODE-->
<script>
var wsUri = "ws://localhost:15619";
var websocket = null;
function initWebSocket()
{
try
{
if (typeof MozWebSocket == 'function')
webSocket = MozWebSocket;
if ( websocket && websocket.readyState == 1 )
websocket.close();
websocket = new WebSocket( wsUri );
websocket.onopen = function (event)
{
console.log( 'initWebSocket:open' );
};
websocket.onclose = function (event)
{
setTimeout( initWebSocket, 3000 );
};
websocket.onerror = function (event)
{
websocket.close();
};
websocket.onmessage = function (event)
{
var message = JSON.parse( event.data );
//onNewMessage( "debug", "debug", message, "" );
if( MESSAGE == message.type )
{
onNewMessage( message.message.service, message.message.nick, message.message.message, message.message.type );
document.body.scrollTop = document.body.scrollHeight;
}
else if( STATISTIC == message.type )
{
onStatisticReceived( message.statistic.service, message.statistic.statistic );
}
document.body.scrollTop = document.body.scrollHeight;
};
}
catch (exception)
{
}
}
initWebSocket();
//setInterval(function() { document.body.scrollTop = document.body.scrollHeight; }, 500 );
</script>
<!--END_BROWSER_CODE-->
</body>
</html>
css
Код:
@-webkit-keyframes slideAnim
{
from{ margin-left: 100%; }
// 50%{ margin-left: -20%; }
// 70%{ margin-left: 15%; }
// 85%{ margin-left: -10%; }
// 95%{ margin-left: 5%; }
to{ margin-left: 0%; }
}
html
{
overflow: hidden;
}
body
{
padding: 0px;
margin: 0px;
}
#messagesList
{
}
.alias .messagebox
{
color: rgb( 255, 128, 0 );
}
.ignore .messagebox
{
color: rgb( 255, 128, 0 );
}
.support .messagebox
{
color: rgb( 255, 128, 0 );
}
.messagebox
{
font-family: Arial;
font-weight: bold;
line-height: 1.2em;
font-size: 22px;
background-color: rgba( 0,0,0, .2);
color: rgb( 255, 255, 255 );
width: 100%;
text-shadow: 2px 2px rgba( 128,128,128, .5 );
-webkit-animation: slideAnim .2s;
}
.header
{
display: inline-block;
}
.message
{
display: inline;
}
.service
{
display: inline-block;
}
.nick
{
display: inline-block;
color: #1895da;
}
.smile
{
height: 16px;
}
.picture
{
width: 100%;
}
.aces
{
content: url(../resources/aceslogo.png);
height: 16px;
}
.cybergame
{
content: url(../resources/cybergamelogo.png);
height: 16px;
}
.funstream
{
content: url(../resources/funstreamlogo.png);
height: 16px;
}
.gamerstv
{
content: url(../resources/gamerstvlogo.png);
height: 16px;
}
.gipsyteam
{
content: url(../resources/gipsyteamlogo.png);
height: 16px;
}
.goodgame
{
content: url(../resources/goodgamelogo.png);
height: 16px;
}
.hitbox
{
content: url(../resources/hitboxlogo.png);
height: 16px;
}
.igdc
{
content: url(../resources/igdclogo.png);
height: 16px;
}
.livecoding
{
content: url(../resources/livecodinglogo.png);
height: 16px;
}
.realltv
{
content: url(../resources/realltvlogo.png);
height: 16px;
}
.sc2tv
{
content: url(../resources/sc2tvlogo.png);
height: 16px;
}
.streambox
{
content: url(../resources/streamboxlogo.png);
height: 16px;
}
.twitch
{
content: url(../resources/twitchlogo.png);
height: 16px;
}
.vidi
{
content: url(../resources/vidilogo.png);
height: 16px;
}
.youtube
{
content: url(../resources/youtubelogo.png);
height: 16px;
}
|