Hallo liebe Webkicksler!
Da dieses Script jetzt schon wirklich oft gewünscht wurde, wie z.B.
hier, aber nie in Angriff genommen wurde, habe ich es nun geschrieben. Es ist eine Abwandlung des
Individuellen Loginsound - Scripts und damit natürlich vollkommen kompatibel.
Danke an Linus, der mir in seinem Chat Tipps zu dem Script gegeben hat.
Das Script lässt eine neue Checkbox im Eingabeframe erscheinen, mit der man das Script auch gleich aktivieren kann. Sobald sie aktiviert ist, erscheint nach jeder neuen Chatzeile eines Mitchatters ein Signalton. Nach eigenen Chatnachrichten aber natürlich nicht.
Wird die Checkbox deaktiviert, wird der Sound - falls dieser noch abgespielt wird - abgebrochen und es erscheint kein Sound mehr, wenn ein Mitchatter eine neue Chatnachricht schreibt.
Es lassen sich sogar individuelle Signaltöne einstellen, die erscheinen, wenn dieser bestimmter User eine neue Chatnachricht geschrieben hat.
Hier das Script:
Code: Alles auswählen
// Version 2.1
var MsgUser = new Array();
var MsgSound = new Array();
/* Konfiguration */
// Sollen Gäste auch Messagesounds hören/aktivieren können? (1 = eingeschaltet, 0 = ausgeschaltet)
var MsgGuests = 1;
// Hier kann der Text, der vor der Checkbox im Eingabeframe steht, angepasst werden
var MsgSoundName = "Messagesound";
// Standardsound. Falls ein User nicht bei speziellen Messagesounds aufgelistet ist, wird der Sound abgespielt (Zahlen 1-20 sind die Standardsounds vom Chat, ansonsten eigene URL zum Sound angeben!)
var defaultMsgSound = "/6.wav";
// Hier müssen die User mit speziellen Messagesounds aufgezeigt werden
// Muster:
// MsgUser[ZAHL] = "USER";
// MsgSound[ZAHL] = "URL-ZUM-SOUND";
// ZAHL muss bei 0 beginnen und kann unendlich weit steigen. Jede Zahl bitte nur einmal verwenden (also einmal für User und einmal für Sound)!
// User immer klein schreiben!
MsgUser[0] = "maxs";
MsgSound[0] = "URL-ZUR-sound.wav";
/* Ab hier bitte nichts mehr ändern! */
var formInfo = parent.info.document.forms[0]; var LsStopper = 0;
newMsgSound = new (function () {
var that = this;
this.MsgInt; this.activated; this.lastMsg = ""; this.audioTag = 0;
this.objType = (typeof document.createElement("bgsound").src != "undefined" && !myBrowser.Opera) ? "bgsound" : "embed";
that.objType = (!!document.createElement("audio").canPlayType && document.createElement("audio").canPlayType("audio/wav").match(/maybe|probably|true/i)) ? "audio" : that.objType;
this.start = function () {
if (!formInfo.MsgSound) {that.MsgBox()} else {that.checkBox()};
}
this.soundObj = function () {
that.stopObj();
var obj = document.createElement(that.objType);
if (that.objType == "embed") {
with (obj) {
type = "audio/wav";
width = 1;
height = 1;
hidden = true;
}
}
if (that.objType != "audio") obj.id = "bgSound_id";
return obj;
}
this.playSound = function () {
var tds = document.getElementsByTagName("td");
var ld = tds[tds.length-1];
if (tds.length != 0 && strip_tags(ld.innerHTML) != that.lastMsg && lineData(ld)[2] != myNick) {
that.lastMsg = strip_tags(ld.innerHTML);
if (lineData(ld)[0] != 4 && lineData(ld)[0] != 5 && !LsStopper) {
var soundID = MsgUser.indexOf(lineData(ld)[2].toLowerCase());
if (that.activated) {
var sObj = that.soundObj();
sObj.src = (soundID != -1) ? MsgSound[soundID] : defaultMsgSound;
if (that.objType != "audio" && (!myBrowser.WebKit || formInfo.message.value == "")) {
document.body.appendChild(sObj);
if (that.objType != "bgsound") window.setTimeout("with(formInfo){elements[elements.length-1].focus();message.focus();}", 850);
} else if (that.objType == "audio") {
that.audioTag = sObj;
sObj.play();
}
}
}
}
}
this.stopObj = function () {
if (that.audioTag != 0) that.audioTag.pause();
var ObjID = document.getElementById("bgSound_id");
if (document.getElementById("bgSound_id")) ObjID.parentNode.removeChild(ObjID);
}
this.checkBox = function () {
that.activated = formInfo.MsgSound.checked;
if (!that.activated) {
that.stopObj();
window.clearInterval(that.MsgInt);
} else {
var tds = document.getElementsByTagName("td");
that.lastMsg = (tds.length != 0) ? strip_tags(tds[tds.length-1].innerHTML) : "";
that.MsgInt = window.setInterval(function(){that.playSound();}, 800);
}
}
this.MsgBox = function () {
if (efIsLoad()) {
if (myStatus > 0 || MsgGuests) {
var Msgbox = parent.info.document.createElement("span");
Msgbox.innerHTML = ' ' + MsgSoundName + ': <input type="checkbox" name="MsgSound" onclick="parent.mainframe.newMsgSound.checkBox()" /> ';
Msgbox.title = "Spielt einen Signalton nach jeder Chatnachricht ab";
formInfo.insertBefore(Msgbox, formInfo.childNodes[0]);
}
} else {window.setTimeout(function(){that.MsgBox();}, 500);}
}
});
newMsgSound.start();
Ohne Änderung des Codes sollte das Script direkt funktionieren.
Das Script kommt (wegen der Größe) in eine JavaScript-Datei (*.js-Datei) und wird anschließend auf den eigenen Webspace hochgeladen, um ihn dann später mit folgendem Code
nach der Grundscriptsammlung (wird natürlich benötigt!) in die 1. und 3. Ankündigung einzufügen:
Code: Alles auswählen
<script type="text/javascript" src="URL-ZUR-JS-DATEI"></script>
URL-ZUR-JS-DATEI muss natürlich angepasst werden. Weitere Informationen zum Einfügen von Scripts erhälst du in der
Scriptübersicht!
Falls kein Ton erscheint, liegt es an folgenden Möglichkeiten:
- Deine Lautsprecher sind zu leise eingestellt oder deaktiviert. Achte auch unten rechts im Systemtray (unter Windows-Betriebssystemen), dass der Sound aktiviert ist.
- Im Chat unten im Eingabeframe wurde das Kästchen für den Messagesound nicht aktiviert
- Es hat kein anderer User eine Nachricht in den Chat gesendet. Wenn du selbst eine Nachricht in den Chat sendest, erscheint natürlich kein Ton.
- Der andere User schreibt immer wieder dieselbe identische Nachricht. Wenn der andere User innerhalb einer Minute immer wieder exakt dieselbe Nachricht in den Chat sendet, erscheint der Ton nicht nochmal.
- Du hast das Script geändert und es funktioniert nun nicht mehr. Versuche, das Script ohne Änderungen hochzuladen (direkt von hier in eine JavaScript-Datei kopiert). Sollte es dann funktionieren, liegt es an deiner Änderung! Achte darauf, die korrekten und kompletten URLs zu den Sounds anzugeben (z.B. "https://server1.webkicks.de/1.wav"). Falls du den verschlüsselten Chat nutzt (mit https), müssen die Sound-URLs auch mit https verschlüsselt sein. Achte auch nochmal auf die Konfigurationsanleitung hier weiter unten.
- Dein Browser ist veraltet. Bitte nutze einen aktuellen Browser.
Sollte all dies nicht zutreffen, überprüfe, ob du das Script korrekt und die Grundscriptsammlung vorher eingebunden hast. Wenn du meinst, dass alles korrekt sein sollte und den Fehler immer noch nicht finden kannst, melde dich hier mit einer URL zu deinem Chat.
Bitte benutzt keine zu großen Sounddateien, sonst braucht der Sound länger bis er erscheint und außerdem wird die Last im Chat und auch für euren Webspace sehr hoch. Die Sounds sollten mit
.wav enden und auch nicht zu lang sein (ab 2 Sekunden wird es für die Chatter meist zu nervig). Außerdem müsst ihr das Copyright der Sounds beachten!
Konfiguration
Die ersten drei Zeilen werden bitte
nicht verändert. Es muss nur das angepasst werden, was auch zwischen
/* Konfiguration */ und
/* Ab hier bitte nichts mehr ändern! */ steht.
Bitte beachtet, dass die Sounds immer mit .wav enden. Es werden nur *.wav-Sounds unterstützt. Falls ihr andere abspielen möchtet, dann fragt hier nochmal.
// Sollen Gäste auch Messagesounds hören/aktivieren können? (1 = eingeschaltet, 0 = ausgeschaltet)
var MsgGuests = 0;
Falls ihr wollt, dass Gäste auch die Messagesounds hören/aktivieren können sollen, dann ändert die
rotmarkierte 0 in eine 1 um, falls nicht, dann lasst die 0 dort stehen.
// Hier kann der Text, der vor der Checkbox im Eingabeframe steht, angepasst werden
var MsgSoundName = "Messagesound";
Wenn ihr z.B. wollt, dass vor der Checkbox
Nachrichtenton stehen soll, dann ersetzt das
rotmarkierte Messagesound mit
Nachrichtenton.
// Standardsound, falls User hier nicht aufgelistet, wird der Sound abgespielt
var defaultMsgSound = "/6.wav";
Das ist der Standardsound. Dieser wird abgespielt, wenn ein User keinen individuellen Messagesound hat. Das
Rotmarkierte (= Url zum Standardsound) kann natürlich angepasst werden. Derzeit ist es ein Loginsound vom Webkickschat. Ich empfehle auch, einen eigenen Sound zu nehmen, denn wirklich prickelnd hört er sich nicht an, wenn er sehr oft abgespielt werden muss (Hier gehen die Zahlen 1-20 für die Standardsounds vom Webkickschat).
// Hier müssen die User mit speziellen Messagesounds aufgezeigt werden
// Muster:
// MsgUser[ZAHL] = "USER";
// MsgSound[ZAHL] = "URL-ZUM-SOUND";
// ZAHL muss bei 0 beginnen und kann unendlich weit steigen. Jede Zahl bitte nur einmal verwenden (also einmal für User und einmal für Sound)!
// User immer klein schreiben!
MsgUser[0] = "maxs";
MsgSound[0] = "URL-ZUR-sound.wav";
Hier werden die User und ihre speziellen Sounds aufgeschrieben. Das System ist ganz einfach, zuerst wird der User aufgelistet, und danach die URL zu seinem Sound. Dabei muss nur beachtet werden, dass die Zahlen vom Sound des Users und vom User selbst in den eckigen Klammern übereinstimmen.
Die Syntax bleibt immer ähnlich:
MsgUser[ZAHL] = "USER";
MsgSound[ZAHL] = "URL-ZUM-SOUND";
Die beiden
ZAHL[-en] werden immer durch eine Zahl aufsteigend ab 0 ersetzt.
Bitte überspringe keine Zahl.
USER wird durch den Usernamen des Users ersetzt.
Bitte schreibe den Namen in Kleinbuchstaben, sonst funktioniert es nicht!
URL-ZUM-SOUND wird mit der URL ersetzt, die zu dem individuellen Sound des Users führt.
Es muss ein .wav-Sound sein!
Wenn du das alles beachtest (Zahlen richtig vergeben, Usernamen in Kleinbuchstaben, ...), dann sollte das Script funktionieren.
Versionsübersicht
29.06.2011 - Release
01.08.2011 - V1.1:
- * Das Script benötigt nun weniger Code
* User, die einen WebKit-Browser benutzen (Chrome/Chromium, Safari, ...) hören nun nur noch Sounds, wenn das Eingabefeld leer ist. Grund: Der Sound löscht den Fokus aus dem Eingabefeld, so muss man nach jedem Sound, der abgespielt wird, neu darauf klicken - und das nervt natürlich viele während sie schreiben. Andere Browser betrifft diese Regel nicht.
01.08.2011 - V1.2:
- * Das Script hat jetzt ein eigenes Soundelement
* Das Script spielt keinen Sound ab, wenn eine Loginnachricht erscheint
12.08.2011 - V1.3:
- * Das Script verursacht nun keinen Fehlzugriff mehr, wenn ein Sound abgespielt wurde
19.06.2012 - V2.0:
- * Der Code wurde fast vollkommen überarbeitet
* Unterstützt nun auch HTML 5-kompatible Browser. Bei neueren WebKit-Browsern wird nun auch immer der Sound abgespielt - der Fokus bleibt immer in der Eingabezeile.
04.04.2017 - V2.1:
- * Standardsound-URL angepasst. Sie ist damit HTML5-kompatibel.
Viel Spaß mit dem Script!
PS: Es kann sein, dass ihr für Browser ohne HTML 5-Unterstützung (<audio>-Tag) ein PlugIn installieren müsst (z.B. QuickTime).