Flüsterpopup / Dauerflüstern

Fragen zu HTML, CSS, eigenen Erweiterungen etc.
1. FC Keller
Moderator
Beiträge: 853
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von 1. FC Keller » 30.09.2011, 14:35

Dies ist eine Kopie des Threads aus dem alten Forum. Ich habe den Code ein wenig überarbeitet und an neue Features von wktools, webkicks und der GSS angepasst.

Servus! Heute hab ich dieses Script endlich mal hinbekommen :-)

Wenn ihr dieses Script mittels Chatbefehl ausführt (/CHATBEFEHL NICK) öffnet sich ein Popup, über das ihr mit einem User privat chatten könnt. Der Chat läuft dabei normal weiter. Ihr könnt in dem Popup per Checkbox bestimmen ob diese Nachrichten im Stream weiterhin angezeigt oder ausgeblendet werden sollen. Wenn ihr in diesem Fenster einen Text absendet wird er automatisch dem anderen zugeflüstert. Die Eingabe von /f Nick entfällt also.
Wenn ihr das Popup schließt wird automatisch das Ausblenden der Flüsternachrichten deaktiviert, sodass ihr auch weiter normal im Stream lesen könnt wenn euch der User etwas flüstert.
Das Ganze sieht dann zum Beispiel in meinem Chat so aus:
Bild

Gebraucht wird wie fast immer die Grundscriptsammlung.

Um es einzubauen müsst ihr folgenden Code in eine JS-Datei speichern und auf einen Webspace hochladen (oder im ScriptManager von wktools eintragen):

Code: Alles auswählen

var fWinUser={};
var docTds=document.getElementsByTagName("td");

function fWinStream(i, a){
  if(!!a && a[0]==10 && !!(docTds[i].innerHTML.match(/ fl.stert<.span>:/i))){
    nick = a[2];
    if(!!fWinUser[nick]){
      fWinUser[nick].messages[fWinUser[nick].messages.length] = docTds[i].innerHTML.replace(/ flüstert/, "");
      fWinUser[nick].lineNr.push(i);
      if(!!fWinUser[nick]["fWin"] && !fWinUser[nick]["fWin"].closed && !!fWinUser[nick]["fWin"].name){
        var newTbl=fWinUser[nick]["fWin"].document.createElement("table");
        var newTbody=fWinUser[nick]["fWin"].document.createElement("tbody");
        var newTr=fWinUser[nick]["fWin"].document.createElement("tr");
        var newTd=fWinUser[nick]["fWin"].document.createElement("td");
        newTd.setAttribute("id", "td"+i);
        newTr.appendChild(newTd);
        newTbody.appendChild(newTr);
        newTbl.appendChild(newTbody);
        fWinUser[nick].fWin.document.getElementById("fluesterStream").appendChild(newTbl);
        fWinUser[nick].fWin.document.getElementById("td"+i).innerHTML=fWinUser[nick].messages[fWinUser[nick].messages.length-1];
        if(!fWinUser[nick].showInStream){
          docTds[i].parentNode.parentNode.parentNode.style.display="none";
        }
      }
    }
  }else if(!!(docTds[i].innerHTML.match(/Du fl.sterst an /i))){
    nick = a[5];
    //alert("du an "+nick);
    if(!!fWinUser[nick]){
      fWinUser[nick].messages[fWinUser[nick].messages.length]=docTds[i].innerHTML.replace("Du flüsterst an "+nick, myNick);
      fWinUser[nick].lineNr.push(i);
      if(!!fWinUser[nick]["fWin"] && !fWinUser[nick]["fWin"].closed && !!fWinUser[nick]["fWin"].name){
        var newTbl=fWinUser[nick]["fWin"].document.createElement("table");
        var newTbody=fWinUser[nick]["fWin"].document.createElement("tbody");
        var newTr=fWinUser[nick]["fWin"].document.createElement("tr");
        var newTd=fWinUser[nick]["fWin"].document.createElement("td");
        newTd.setAttribute("id", "td"+i);
        newTr.appendChild(newTd);
        newTbody.appendChild(newTr);
        newTbl.appendChild(newTbody);
        fWinUser[nick].fWin.document.getElementById("fluesterStream").appendChild(newTbl);
          fWinUser[nick].fWin.document.getElementById("td"+i).innerHTML=fWinUser[nick].messages[fWinUser[nick].messages.length-1];
        if(!fWinUser[nick].showInStream){
          docTds[i].parentNode.parentNode.parentNode.style.display="none";
        }
      }
    }
  }
}

addStreamReader(fWinStream);

function fWinShowHide(show, nick){
  fWinUser[nick].showInStream = show;
  for(i=0; i<fWinUser[nick].lineNr.length; i++){
    docTds[fWinUser[nick].lineNr[i]].parentNode.parentNode.parentNode.style.display=show?(document.all?"block":"table-cell"):"none";
  }
}

function starteFWin(nick){
  if(!fWinUser[nick]){
    fWinUser[nick]={"messages":[], "fWin":{}, "lineNr":[], "showInStream":false};
    var a;
    for(i=0;i<docTds.length;i++){
      a=lineData(docTds[i]);
      if(!!a && a[0]==2 && a[2]==nick && docTds[i].innerHTML.match(/ fl.stert<.span>:/i)){
        fWinUser[nick].messages.push(docTds[i].innerHTML.replace(/ fl.stert/, ""));
        fWinUser[nick].lineNr.push(i);
      }else if( docTds[i].innerHTML.match("Du flüsterst an "+nick+"</")){
        fWinUser[nick].messages.push(docTds[i].innerHTML.replace("Du flüsterst an "+nick, myNick));
        fWinUser[nick].lineNr.push(i);
      }
    }
  }
  if(!!fWinUser[nick]["fWin"] && !fWinUser[nick]["fWin"].closed && !!fWinUser[nick]["fWin"].name){
    fWinUser[nick]["fWin"].close();
  }
  fWinUser[nick]["fWin"] = window.open("about:blank", "fWin_"+myNick+"_"+nick, "width=300,height=300,scrollbars=yes");
  fWinUser[nick]["fWin"].document.write("<html><head><title>Fl&uuml;sterfenster mit "+nick+"</title>"+
    "<link rel='stylesheet' type='text/css' href='http://server"+chatData[0]+".webkicks.de/"+chatData[1]+"/style_stream.css'><script language='javascript'>window.setInterval('window.scrollBy(0,50)',100)</"+"script></head><body><table style='width:100%;height:100%'><tbody>"+
      "<tr style='height:100%'><td style='overflow:scroll; vertical-align:top;' id='fluesterStream'>"+
      "<table><tbody><tr><td>"+fWinUser[nick].messages.join("</td></tr></tbody></table><table><tbody><tr><td>")+"</td></tr></tbody></table>"+
      "</td></tr><tr><td>"+
      "<form name='fForm' onsubmit='opener.sendeText(\"/f "+nick+" \"+this.fMessage.value); this.fMessage.value=\"\"; return false;'>"+
      "im Stream anzeigen?<input type='checkbox' name='showHide' onclick='opener.fWinShowHide(this.checked, \""+nick+"\")'><input name='fMessage' class='input'><input type='submit' class='submit' value='senden'></form></td></tr>"+
    "</tbody></table></body></html>");
}

function fwinBefehl(m, u){
  u=strip_tags(u)
  if(myNick==m){
    starteFWin(u);
    document.write("Falls das Fenster nicht ge&ouml;ffnet wurde klicke hier: <a href='javascript:starteFWin(""+u+"");'>Fenster &ouml;ffnen!</a>");
    return;
  }else if(myNick==u){
    document.write("startet ein Fl&uuml;sterfenster mit dir. <a href='javascript:starteFWin(""+m+"");'>Auch starten!</a>");
    return;
  }
  document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
}
Anpassungen sind nicht notwendig. Der Style der Popups wird automatisch vom Chat übernommen.

Um die JS-Datei einzubinden wie immer folgender Code in die Ankündigung:

Code: Alles auswählen

<script type="text/javascript" src="http://deineURL/fwin.js"></script>
http://deineURL/fwin.js natürlich durch die Adresse der hochgeladenen Datei ersetzen.

Zuguterletzt müsst ihr noch einen Chatbefehl anlegen (z.B. /fwin). Name ist euch überlassen. Der Code sieht so aus:

Code: Alles auswählen

<script language="javascript">if(parent.info){fwinBefehl('%myname%', '%user%');}else{document.write(" öffnet ein Flüsterfenster.")}</script>
Wenn ihr das Nickmenü verwendet ist dieses Script dort sicher einen Eintrag wert ;-)

Code: Alles auswählen

mkTd("Flüster-Fenster", "/CHATBEFEHL ");
Das Script ist im IE 7 und FF 2 erfolgreich getestet.

Edit 29.11.2011: Alle Codes komplett überarbeitet und unter anderem an die neue GSS angepasst. Außerdem wird ein Link angezeigt, mit dem man das Flüsterfenster auch bei aktiviertem Popupblocker öffnen kann.

Benutzeravatar
hamigra
Beiträge: 567
Registriert: 31.08.2006, 16:02
Wohnort: Werdau
Kontaktdaten:

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von hamigra » 30.09.2011, 16:09

1. FC Keller hat geschrieben:... Edit 12.03.09: wenn ihr stattdessen folgenden Chatbefehl anlegt wird beim jeweils anderen User (der quasi eingeladene) ein Link angezeigt. Wenn dieser darauf klickt öffnet sich auch bei ihm das Flüsterfenster:

Code: Alles auswählen

<script language="javascript">f=" öffnet ein Flüsterfenster";if(parent.info){t=document.getElementsByTagName("table");i=myNick;m='%mynick%';u='%text%';if(i==m)starteFWin(u);if(i==u)document.write(f+" <a href='javascript:starteFWin(\""+m+"\");'>auch starten</a>");else t[t.length-1].style.display="none"}else{document.write(f)}</script>
...
Ups - Ich habe aber diesen Chatbefehl:

Code: Alles auswählen

<script language="javascript">f=" öffnet ein Flüsterfenster";if(parent.info){t=document.getElementsByTagName("table");s=strip_tags;i=myNick;m=s('%me%');u=s('%user%');if(i==m)starteFWin(u);if(i==u)document.write(f+" <a href='javascript:starteFWin(\""+m+"\");'>auch starten</a>");else t[t.length-1].style.display="none"}else{document.write(f)}</script>
und der funktioniert bestens.
Der einzige Nachteil ist, wenn im Chat ein schwarzer Hintergrund ist, weil die Nicks im Flüsterfenster schwarz dargestellt werden.
Deutsche Sprache ist Freeware, aber nicht OpenSource! Du darfst sie benutzen, aber nicht verändern.

Benutzeravatar
Mogli
Beiträge: 456
Registriert: 18.10.2010, 23:42
Wohnort: Bayern
Kontaktdaten:

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von Mogli » 30.09.2011, 17:23

Ich finde die Schreibzeile etwas zu klein geraten! Wo kann bitte die Länge der Schreibzeile ändern?

Schöne Grüße
Mogli
Großschreibung, Punkt und Komma sind nicht schwer und erfreut den Leser sehr! :-)
--------------------------------------------------------------------------------------------------------------------------------------------------

1. FC Keller
Moderator
Beiträge: 853
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von 1. FC Keller » 30.09.2011, 21:32

Das ist der Code des Eingabefelds:

Code: Alles auswählen

<input name='fMessage' class='input'>
diese kann man per CSS anpassen:

Code: Alles auswählen

<input name='fMessage' class='input' style='width:200px;'>

Benutzeravatar
Mogli
Beiträge: 456
Registriert: 18.10.2010, 23:42
Wohnort: Bayern
Kontaktdaten:

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von Mogli » 01.10.2011, 09:18

Vielen Dank an 1. FC Keller und alle die versucht haben zu helfen! :-)
Zuletzt geändert von ZischDings am 01.10.2011, 17:25, insgesamt 1-mal geändert.
Grund: Thread bereinigt, Blähbeiträge gelöscht ;-)
Großschreibung, Punkt und Komma sind nicht schwer und erfreut den Leser sehr! :-)
--------------------------------------------------------------------------------------------------------------------------------------------------

Movert
Beiträge: 46
Registriert: 20.08.2011, 16:43

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von Movert » 02.10.2011, 00:13

ich hab nun folgendes getan, und es geht immernoch nicht.
1) Den Skript in wkTools eingefügt.
2) die Adresse des Skriptes kopiert, in deinen Skript teil eingefügt, und ab in die ANkündigung damit.
3) dann den 1. Befehl erstellt:
/fwin
und dann den COde ins 2te FEld.

Was hab ich falsch gemacht?

MfG. Movert

Movert
Beiträge: 46
Registriert: 20.08.2011, 16:43

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von Movert » 09.10.2011, 13:05

Woran liegt es, dass nun ohne mein zutun das ganze funktioniert?

1. FC Keller
Moderator
Beiträge: 853
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von 1. FC Keller » 10.10.2011, 00:28

sorry, ich hatte versäumt mich nochmal hier zu melden.. die grundscriptsammlung war nicht eingebunden und der chatbefehl hatte gefehlt. außerdem war das script von wktools gefühlte 100 mal in der normalen und der team-ankündigung eingebunden.
ich habe all diese punkte korrigiert.

Movert
Beiträge: 46
Registriert: 20.08.2011, 16:43

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von Movert » 10.10.2011, 14:08

Ok, Danke. daran lag es
aber wie hast du das gemacht? du bist doch kein Admin in meinem Chat?

koc
Beiträge: 9
Registriert: 27.11.2011, 19:05

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von koc » 27.11.2011, 19:59

Ich kriegs irgendwie auch nicht gebacken.

Das Script hab ich drin, den Befehl auch. Hab sogar an die Ankündigung gedacht und die Grundscript-Sammlung. Aber wenn ich einen anderen User anflüstere, geht bei mir kein Fenster auf.
Beim angeflüsterten geht zwar ein Fenster auf, aber der text kommt nicht in dem Fenster, sondern im normalen Stream.

Ich kann als Admin auch nicht angeflüstert werden.


Der Chat ist http://server1.webkicks.de/ratgeber/

Verwendet hab ich FF 8.0 und IE 9. oder IE 10, bin mir ned ganz sicher.

Wo hab ich da den Fehler drin?

Benutzeravatar
Mogli
Beiträge: 456
Registriert: 18.10.2010, 23:42
Wohnort: Bayern
Kontaktdaten:

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von Mogli » 27.11.2011, 20:23

Hallo Koc,

willkommen im Forum. Hast du geprüft ob dein Popup-Blocker vom Browser auf Webkicks Popups zuläßt? Wenn du deinen Gastzugang öffnest, würde ich mir das bei dir im Chat schnell anschauen!

Schöne Grüße
Mogli
Großschreibung, Punkt und Komma sind nicht schwer und erfreut den Leser sehr! :-)
--------------------------------------------------------------------------------------------------------------------------------------------------

koc
Beiträge: 9
Registriert: 27.11.2011, 19:05

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von koc » 27.11.2011, 20:40

Hallo,

danke für die schnelle Hilfe.

Ich hab die Popupblocker geöffnet.

Allerdings öffnet sich bei dem, der "anchattet", kein Fenster. Bei dem, der "angechattet" wird, öffnet sich zwar ein Fenster, allerdings steht da " Flüsterfenster mit %mynick%". Wenn ich da antworten will, kommt als Bot.Nachricht
"Chat-Bot-PM: Nachricht konnte nicht verschickt werden. Der Chatter "%mynick%" existiert nicht."

Irgendwo hab ich da einen Haken, aber leider finde ich den nicht.

Benutzeravatar
Mogli
Beiträge: 456
Registriert: 18.10.2010, 23:42
Wohnort: Bayern
Kontaktdaten:

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von Mogli » 27.11.2011, 22:04

Wir haben das jetzt im Chat von Koc getestet und es hat sich folgendes Problem ergeben:

Das Popup öffnet sich, aber das was im Flüsterfenster geschrieben wird, kann der Empfänger nur im Chatstream lesen, der Absender kann sein geschriebenes im Flüsterfenster lesen.

Getestet wurde es in Koc's Chat mit:
- FF 8
- iron 9
- IE 9
- IE 8
- Iron 12.0.75.0
- chrome 11.0.696.71

Mit Iron 12.0 hat alles einwandfrei funktioniert. Mit den anderen Browsern nicht.

In meinem und in einem anderen Chat habe ich es ebenfalles getestet mit FF 8.0. Dort tritt das oben beschriebene Problem auch auf. Offensichtlich gibt es ein Problem mit dem Skript!
Großschreibung, Punkt und Komma sind nicht schwer und erfreut den Leser sehr! :-)
--------------------------------------------------------------------------------------------------------------------------------------------------

Book_of_Fred
Beiträge: 3
Registriert: 09.02.2011, 16:56

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von Book_of_Fred » 28.11.2011, 13:47

Hallo
Bekomme es auch nicht hin !! wäre über hilfe sehr dankbar !!!!!!

Grüsse Fred
http://server1.webkicks.de/magicgames/

1. FC Keller
Moderator
Beiträge: 853
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Flüsterpopup / Dauerflüstern

Ungelesener Beitrag von 1. FC Keller » 28.11.2011, 16:03

schuld daran war wohl das GSS-Update letzte Woche. Hier wurde die lineData-Funktion geändert, damit Flüsternachrichten korrekt erkannt werden - dieses Script hat sich aber auf die alte, fehlerhafte Erkennung verlassen.

Ich habe den langen Script-Code im ersten Post nun aktualisiert, sodass er wieder funktioniert. Er nutzt jetzt die neuen Features der GSS, unter anderem auch die neue streamReader-Funktion, was bei derartigen Scripts Last für eure Browser sparen soll.
Außerdem ist das Script nun kompatibel mit dem Scriptmanager von wktools (ich bin nicht sicher ob ich hierfür schonmal ein Update hatte, aber die Version, die in meinem Chat war, war nicht kompatibel).

Weiterhin können nun mehrere Flüsterfenster gleichzeitig laufen. Vorher wurde immer das zuvor geöffnete überschrieben weil die Fenster alle den gleichen Namen hatten.

Der Code für den Chatbefehl wurde nicht geändert.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste