Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.8 veröffentlicht (17.10.16)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Ajax-Chat Smilies erst laden wenn Chat geladen ist
#1
Sorry wenn ich nochmal mit diesem Chat nerve, aber ihr seit die Kompetentesten Menschen hier lol .

Also ich habe die Smilie Box modifiziert und sie ist in einem unsichtbaren div (display:noneWink und bei nem klick auf den Button "Smilie" öffnet sich dieses Div.
Nun werden die Smilies von Haus aus mit dem Chat geladen, was zu folge hat das das ganze Laden extrem lange dauert weil wir ultra viele Smilies haben, die wir aber auch nicht missen möchten weil wir von webkicks rüberwechseln auf unsern Chat. Und die User sind es halt gewohnt diese Smilies nutzen zu können.

Ist es irgendwie möglich das die Smilies erst bei dem Klick auf Smilies geladen werden ?

Hier mal der Ausschnitt aus der loggedin.html
PHP-Code:
<div id="bbCodeContainer">  
            <
input type="button" value="Smilies" alt="Smilies" onclick="ajaxChat.showHide('emoticonsContainer', null);" /> 
            <
input type="button" value="[LANG]bbCodeLabelBold[/LANG]" title="[LANG]bbCodeTitleBold[/LANG]" onclick="ajaxChat.insertBBCode('b');" style="font-weight:bold;"/>
            <
input type="button" value="[LANG]bbCodeLabelItalic[/LANG]" title="[LANG]bbCodeTitleItalic[/LANG]" onclick="ajaxChat.insertBBCode('i');" style="font-style:italic;"/>
            <
input type="button" value="[LANG]bbCodeLabelUnderline[/LANG]" title="[LANG]bbCodeTitleUnderline[/LANG]" onclick="ajaxChat.insertBBCode('u');" style="text-decoration:underline;"/>
            <
input type="button" value="[LANG]bbCodeLabelQuote[/LANG]" title="[LANG]bbCodeTitleQuote[/LANG]" onclick="ajaxChat.insertBBCode('quote');"/>
            <
input type="button" value="[LANG]bbCodeLabelCode[/LANG]" title="[LANG]bbCodeTitleCode[/LANG]" onclick="ajaxChat.insertBBCode('code');"/>
            <
input type="button" value="[LANG]bbCodeLabelURL[/LANG]" title="[LANG]bbCodeTitleURL[/LANG]" onclick="ajaxChat.insertBBCode('url');"/>
            <
input type="button" value="[LANG]bbCodeLabelImg[/LANG]" title="[LANG]bbCodeTitleImg[/LANG]" onclick="ajaxChat.insertBBCode('img');"/>
            <
input type="button" value="[LANG]bbCodeLabelColor[/LANG]" title="[LANG]bbCodeTitleColor[/LANG]" onclick="ajaxChat.showHide('colorCodesContainer', null);"/>
        </
div>
        
        <
div id="colorCodesContainer" style="display:none;" dir="ltr" onclick="ajaxChat.showHide('colorCodesContainer', '');"></div>
        <
div id="emoticonsContainer" onclick="ajaxChat.showHide('emoticonsContainer');" > </div



und hier aus der chat.js ein schnipsel, ich hoffe das es die stelle ist aber ich glaube schon:
Zitat: initEmoticons: function() {
for(var i=0; i<this.emoticonCodes.length; i++) {
// Replace specials characters in emoticon codes:
this.emoticonCodes[i] = this.encodeSpecialChars(this.emoticonCodes[i]);
if(this.dom['emoticonsContainer']) {
this.updateDOM(
'emoticonsContainer',
'<a href="javascript:ajaxChat.insertText(\''
+ this.scriptLinkEncode(this.emoticonCodes[i])
+ '\');"><img src="'
+ this.dirs['emoticons']
+ this.emoticonFiles[i]
+ '" alt="'
+ this.emoticonCodes[i]
+ '" title="'
+ this.emoticonCodes[i]
+ '"/></a>'
);
}
}
},

Vorher wird noch initialisiert auch in der chat.js.....
Zitat:initialize: function() {
this.setUnloadHandler();
this.initializeDocumentNodes();
this.loadPageAttributes();
this.initColorCodes();
this.initializeSettings();
this.setSelectedStyle();
this.initEmoticons();
this.customInitialize();
if(typeof this.initializeFunction == 'function') {
this.initializeFunction();
}
if(!this.isCookieEnabled()) {
this.addChatBotMessageToChatList('/error CookiesRequired');
} else {
if(this.startChatOnLoad) {
this.startChat();
} else {
this.setStartChatHandler();
this.requestTeaserContent();
}
}

// Willkommensmessage:

this.addChatBotMessageToChatList('bla');

},

Konnte sonst nirgendwo was von Emoticon's finden. Habe schon rumprobiert und hin und her geschoben, hab halt kaum ahnung von dem mist Sad

Hoffe ihr könnt damit was anfangen und mir Helfen Sad

EDIT: ODER IST ES MÖGLICH DAS DIE SMILIES ZUMINDEST ALS LETZTES GELADEN WERDEN ? SO DAS ALLES STEHT UND DANN IM NACHHINEIN DIE SMILIES GELADEN WERDEN ?
Zitieren
#2
ok haben einen weg gefunden Smile . Kann geclosed werden ^^
Zitieren
#3
Könntest du den bitte noch hier für andere veröffentlichen?

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#4
Klar, sorry hab wieder nur so weit gedacht wie ein Pferd ... Lassen wir das lol

Also öffne die js/chat.js und suche nach:

PHP-Code:
this.initEmoticons();
this.initColorCodes();

.... 

Entferne dort das "this.initEmoticons();"

Suche weiter in der js/chat.js folgendes:

PHP-Code:
initEmoticons: function() {
        for(var 
i=0i<this.emoticonCodes.lengthi++) {
            
// Replace specials characters in emoticon codes:
            
this.emoticonCodes[i] = this.encodeSpecialChars(this.emoticonCodes[i]);
            if(
this.dom['emoticonsContainer']) {
                    
this.updateDOM(
                        
'emoticonsContainer',
                        
'<a href="javascript:ajaxChat.insertText(\''
                        
this.scriptLinkEncode(this.emoticonCodes[i])
                        + 
'\');"><img src="'
                        
this.dirs['emoticons']
                        + 
this.emoticonFiles[i]
                        + 
'" alt="'
                        
this.emoticonCodes[i]
                        + 
'" title="'
                        
this.emoticonCodes[i]
                        + 
'"/></a>'
                    
);
            }
        }
    }, 

Klammer es einfach aus als vor "initEmoticons: function() {" ein /* und nach der letzten klammer der funtkion "}," , ein */... Man kanns auch ganz löschen Wink

Nun wird der Emoticoncontainer nicht mehr geladen. Keine angst die Smilies werden im Chatfenster dennoch angezeigt. Ich habe nun noch ein Popup gemacht in dem ich alles Smilies fein säuberlich aufführe und halt zum anklicken gemacht habe, das sieht dann so aus:

Codeschnipsel aus meiner smilie.html:
PHP-Code:
<table width="0" border="0">
     <
tr>
      <
td><b><span onclick="javascript:opener.ajaxChat.insertText('dein smilie code hier)" style="cursor:pointer;">smilie code</span></b></td>
      <
td><span onclick="javascript:opener.ajaxChat.insertText('dein smilie code hier')" style="cursor:pointer;"><img src="http://deinesmilies.de"></span></td>
    </
tr>
     <
tr>
      <
td><b><span onclick="javascript:opener.ajaxChat.insertText('dein smilie code hier')" style="cursor:pointer;">smilie code</span></b></td>
  <
td><span onclick="javascript:opener.ajaxChat.insertText('dein smilie code hier')" style="cursor:pointer;"><img src="http://deinesmilies.de"></span></td>
    </
tr>
     <
tr>
usw

Kann man natürlich machen wie man das selber haben will, wichtig ist das "javascript:opener.ajaxChat.insertText('dein smilie code hier')" damit der Smiliecode in das Textfeld dess Chats geschrieben wird ...

Such in der lib/templates/loggedin.html

PHP-Code:
<div id="bbCodeContainer"

Füge darunter ein:

PHP-Code:
<input type="button" value="Smilies" alt="Smilies2" onclick='rl=window.open("http://deinesmilieseite.de","Smilies","scrollbars=yes,width=500,height=600,resizable=yes,toolbar=no,status=no,directories=no,menubar=no,location=no");rl.focus();' /> 

Du musst natürlich trotzdem in der config.js deine Smilie-codes und den Namen dess Gifs oder was auch immer du für eine Art von Bild hast, in den arrays angeben damit er sie replacen kann im Chatfenster.
Ist also ein haufen arbeit, aber der Chat läd 10 mal schneller da er am anfang diesen dummen emoticoncontainer nicht läd.

Ich hoffe ihr versteht das Smile, bin nicht so der Held im erklären !

gruß alex
EDIT: Wie ich den Focus auf des Textfeld setze hab ich noch n icht herrausbekommen...
Zitieren


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Ajax Chat - Wer ist Online ? Anzeige happyspeedy 13 3.391 10.02.2009, 21:09
Letzter Beitrag: Megaleecher