Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    144

    Problemi con Chat stile facebook

    Ciao a tutti!
    Allora ho un problema... io ho trovato questo codice che è una chat simile a quella di facebook... io nel mio file php ho messo una query che ciclando mi metta nella variabile $to il cognome e subito sotto tramite:
    Codice PHP:
    echo "[url='javascript:void(0)']","Chat With ""$to","[/url]","
    "

    stampo tutti i cognomi e in teoria cliccandoci mi si dovrebbe aprire la chat... Ma non funziona con tutti i cognomi! Non so perchè ma funziona solo con alcuni... con altri invece viene scritto in fondo alla pagina:
    javascript: void(0)

    Ovviamente prima di tutto metto
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/chat.js"></script>

    Vi allego nel post successivo il file chat.js . Intanto qualcuno può prenderl se servisse

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    144
    Ora guardando il problema me lo da solo se in $to metto i cognomi, non se metto ad esempio gli id... qualcuno ha idee?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    144
    No scusate ho scoperto il problema... non accetta i cognomi con spazi...
    cmq posto qui il file chat.JS per chi potesse interessare...

    codice:
    var windowFocus = true;
    var username;
    var chatHeartbeatCount = 0;
    var minChatHeartbeat = 1000;
    var maxChatHeartbeat = 33000;
    var chatHeartbeatTime = minChatHeartbeat;
    var originalTitle;
    var blinkOrder = 0;
    
    var chatboxFocus = new Array();
    var newMessages = new Array();
    var newMessagesWin = new Array();
    var chatBoxes = new Array();
    
    $(document).ready(function(){
    	originalTitle = document.title;
    	startChatSession();
    
    	$([window, document]).blur(function(){
    		windowFocus = false;
    	}).focus(function(){
    		windowFocus = true;
    		document.title = originalTitle;
    	});
    });
    
    function restructureChatBoxes() {
    	align = 0;
    	for (x in chatBoxes) {
    		chatboxtitle = chatBoxes[x];
    
    		if ($("#chatbox_"+chatboxtitle).css('display') != 'none') {
    			if (align == 0) {
    				$("#chatbox_"+chatboxtitle).css('right', '20px');
    			} else {
    				width = (align)*(225+7)+20;
    				$("#chatbox_"+chatboxtitle).css('right', width+'px');
    			}
    			align++;
    		}
    	}
    }
    
    function chatWith(chatuser) {
    	createChatBox(chatuser);
    	$("#chatbox_"+chatuser+" .chatboxtextarea").focus();
    }
    
    function createChatBox(chatboxtitle,minimizeChatBox) {
    	if ($("#chatbox_"+chatboxtitle).length > 0) {
    		if ($("#chatbox_"+chatboxtitle).css('display') == 'none') {
    			$("#chatbox_"+chatboxtitle).css('display','block');
    			restructureChatBoxes();
    		}
    		$("#chatbox_"+chatboxtitle+" .chatboxtextarea").focus();
    		return;
    	}
    
    	$(" <div />" ).attr("id","chatbox_"+chatboxtitle)
    	.addClass("chatbox")
    	.html('<div class="chatboxhead"><div class="chatboxtitle">'+chatboxtitle+'</div><div class="chatboxoptions">- X</div><br clear="all"/></div><div class="chatboxcontent"></div><div class="chatboxinput"><textarea class="chatboxtextarea" onkeydown="javascript:return checkChatBoxInputKey(event,this,\''+chatboxtitle+'\');"></textarea></div>')
    	.appendTo($( "body" ));
    			   
    	$("#chatbox_"+chatboxtitle).css('bottom', '0px');
    	
    	chatBoxeslength = 0;
    
    	for (x in chatBoxes) {
    		if ($("#chatbox_"+chatBoxes[x]).css('display') != 'none') {
    			chatBoxeslength++;
    		}
    	}
    
    	if (chatBoxeslength == 0) {
    		$("#chatbox_"+chatboxtitle).css('right', '20px');
    	} else {
    		width = (chatBoxeslength)*(225+7)+20;
    		$("#chatbox_"+chatboxtitle).css('right', width+'px');
    	}
    	
    	chatBoxes.push(chatboxtitle);
    
    	if (minimizeChatBox == 1) {
    		minimizedChatBoxes = new Array();
    
    		if ($.cookie('chatbox_minimized')) {
    			minimizedChatBoxes = $.cookie('chatbox_minimized').split(/\|/);
    		}
    		minimize = 0;
    		for (j=0;j<minimizedChatBoxes.length;j++) {
    			if (minimizedChatBoxes[j] == chatboxtitle) {
    				minimize = 1;
    			}
    		}
    
    		if (minimize == 1) {
    			$('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display','none');
    			$('#chatbox_'+chatboxtitle+' .chatboxinput').css('display','none');
    		}
    	}
    
    	chatboxFocus[chatboxtitle] = false;
    
    	$("#chatbox_"+chatboxtitle+" .chatboxtextarea").blur(function(){
    		chatboxFocus[chatboxtitle] = false;
    		$("#chatbox_"+chatboxtitle+" .chatboxtextarea").removeClass('chatboxtextareaselected');
    	}).focus(function(){
    		chatboxFocus[chatboxtitle] = true;
    		newMessages[chatboxtitle] = false;
    		$('#chatbox_'+chatboxtitle+' .chatboxhead').removeClass('chatboxblink');
    		$("#chatbox_"+chatboxtitle+" .chatboxtextarea").addClass('chatboxtextareaselected');
    	});
    
    	$("#chatbox_"+chatboxtitle).click(function() {
    		if ($('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display') != 'none') {
    			$("#chatbox_"+chatboxtitle+" .chatboxtextarea").focus();
    		}
    	});
    
    	$("#chatbox_"+chatboxtitle).show();
    }
    
    
    function chatHeartbeat(){
    
    	var itemsfound = 0;
    	
    	if (windowFocus == false) {
     
    		var blinkNumber = 0;
    		var titleChanged = 0;
    		for (x in newMessagesWin) {
    			if (newMessagesWin[x] == true) {
    				++blinkNumber;
    				if (blinkNumber >= blinkOrder) {
    					document.title = x+' says...';
    					titleChanged = 1;
    					break;	
    				}
    			}
    		}
    		
    		if (titleChanged == 0) {
    			document.title = originalTitle;
    			blinkOrder = 0;
    		} else {
    			++blinkOrder;
    		}
    
    	} else {
    		for (x in newMessagesWin) {
    			newMessagesWin[x] = false;
    		}
    	}
    
    	for (x in newMessages) {
    		if (newMessages[x] == true) {
    			if (chatboxFocus[x] == false) {
    				//FIXME: add toggle all or none policy, otherwise it looks funny
    				$('#chatbox_'+x+' .chatboxhead').toggleClass('chatboxblink');
    			}
    		}
    	}
    	
    	$.ajax({
    	  url: "chat.php?action=chatheartbeat",
    	  cache: false,
    	  dataType: "json",
    	  success: function(data) {
    
    		$.each(data.items, function(i,item){
    			if (item)	{ // fix strange ie bug
    
    				chatboxtitle = item.f;
    
    				if ($("#chatbox_"+chatboxtitle).length <= 0) {
    					createChatBox(chatboxtitle);
    				}
    				if ($("#chatbox_"+chatboxtitle).css('display') == 'none') {
    					$("#chatbox_"+chatboxtitle).css('display','block');
    					restructureChatBoxes();
    				}
    				
    				if (item.s == 1) {
    					item.f = username;
    				}
    
    				if (item.s == 2) {
    					$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxinfo">'+item.m+'</span></div>');
    				} else {
    					newMessages[chatboxtitle] = true;
    					newMessagesWin[chatboxtitle] = true;
    					$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+':</span><span class="chatboxmessagecontent">'+item.m+'</span></div>');
    				}
    
    				$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);
    				itemsfound += 1;
    			}
    		});
    
    		chatHeartbeatCount++;
    
    		if (itemsfound > 0) {
    			chatHeartbeatTime = minChatHeartbeat;
    			chatHeartbeatCount = 1;
    		} else if (chatHeartbeatCount >= 10) {
    			chatHeartbeatTime *= 2;
    			chatHeartbeatCount = 1;
    			if (chatHeartbeatTime > maxChatHeartbeat) {
    				chatHeartbeatTime = maxChatHeartbeat;
    			}
    		}
    		
    		setTimeout('chatHeartbeat();',chatHeartbeatTime);
    	}});
    }
    
    function closeChatBox(chatboxtitle) {
    	$('#chatbox_'+chatboxtitle).css('display','none');
    	restructureChatBoxes();
    
    	$.post("chat.php?action=closechat", { chatbox: chatboxtitle} , function(data){	
    	});
    
    }
    
    function toggleChatBoxGrowth(chatboxtitle) {
    	if ($('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display') == 'none') {  
    		
    		var minimizedChatBoxes = new Array();
    		
    		if ($.cookie('chatbox_minimized')) {
    			minimizedChatBoxes = $.cookie('chatbox_minimized').split(/\|/);
    		}
    
    		var newCookie = '';
    
    		for (i=0;i<minimizedChatBoxes.length;i++) {
    			if (minimizedChatBoxes[i] != chatboxtitle) {
    				newCookie += chatboxtitle+'|';
    			}
    		}
    
    		newCookie = newCookie.slice(0, -1)
    
    
    		$.cookie('chatbox_minimized', newCookie);
    		$('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display','block');
    		$('#chatbox_'+chatboxtitle+' .chatboxinput').css('display','block');
    		$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);
    	} else {
    		
    		var newCookie = chatboxtitle;
    
    		if ($.cookie('chatbox_minimized')) {
    			newCookie += '|'+$.cookie('chatbox_minimized');
    		}
    
    
    		$.cookie('chatbox_minimized',newCookie);
    		$('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display','none');
    		$('#chatbox_'+chatboxtitle+' .chatboxinput').css('display','none');
    	}
    	
    }
    
    function checkChatBoxInputKey(event,chatboxtextarea,chatboxtitle) {
    	 
    	if(event.keyCode == 13 && event.shiftKey == 0)  {
    		message = $(chatboxtextarea).val();
    		message = message.replace(/^\s+|\s+$/g,"");
    
    		$(chatboxtextarea).val('');
    		$(chatboxtextarea).focus();
    		$(chatboxtextarea).css('height','44px');
    		if (message != '') {
    			$.post("chat.php?action=sendchat", {to: chatboxtitle, message: message} , function(data){
    				message = message.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\"/g,"&quot;");
    				$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+username+':</span><span class="chatboxmessagecontent">'+message+'</span></div>');
    				$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);
    			});
    		}
    		chatHeartbeatTime = minChatHeartbeat;
    		chatHeartbeatCount = 1;
    
    		return false;
    	}
    
    	var adjustedHeight = chatboxtextarea.clientHeight;
    	var maxHeight = 94;
    
    	if (maxHeight > adjustedHeight) {
    		adjustedHeight = Math.max(chatboxtextarea.scrollHeight, adjustedHeight);
    		if (maxHeight)
    			adjustedHeight = Math.min(maxHeight, adjustedHeight);
    		if (adjustedHeight > chatboxtextarea.clientHeight)
    			$(chatboxtextarea).css('height',adjustedHeight+8 +'px');
    	} else {
    		$(chatboxtextarea).css('overflow','auto');
    	}
    	 
    }
    
    function startChatSession(){  
    	$.ajax({
    	  url: "chat.php?action=startchatsession",
    	  cache: false,
    	  dataType: "json",
    	  success: function(data) {
     
    		username = data.username;
    
    		$.each(data.items, function(i,item){
    			if (item)	{ // fix strange ie bug
    
    				chatboxtitle = item.f;
    
    				if ($("#chatbox_"+chatboxtitle).length <= 0) {
    					createChatBox(chatboxtitle,1);
    				}
    				
    				if (item.s == 1) {
    					item.f = username;
    				}
    
    				if (item.s == 2) {
    					$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxinfo">'+item.m+'</span></div>');
    				} else {
    					$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+':</span><span class="chatboxmessagecontent">'+item.m+'</span></div>');
    				}
    			}
    		});
    		
    		for (i=0;i<chatBoxes.length;i++) {
    			chatboxtitle = chatBoxes[i];
    			$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);
    			setTimeout('$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);', 100); // yet another strange ie bug
    		}
    	
    	setTimeout('chatHeartbeat();',chatHeartbeatTime);
    		
    	}});
    }
    
    /**
     * Cookie plugin
     *
     * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
     * Dual licensed under the MIT and GPL licenses:
     * http://www.opensource.org/licenses/mit-license.php
     * http://www.gnu.org/licenses/gpl.html
     *
     */
    
    jQuery.cookie = function(name, value, options) {
        if (typeof value != 'undefined') { // name and value given, set cookie
            options = options || {};
            if (value === null) {
                value = '';
                options.expires = -1;
            }
            var expires = '';
            if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
                var date;
                if (typeof options.expires == 'number') {
                    date = new Date();
                    date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
                } else {
                    date = options.expires;
                }
                expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
            }
            // CAUTION: Needed to parenthesize options.path and options.domain
            // in the following expressions, otherwise they evaluate to undefined
            // in the packed version for some reason...
            var path = options.path ? '; path=' + (options.path) : '';
            var domain = options.domain ? '; domain=' + (options.domain) : '';
            var secure = options.secure ? '; secure' : '';
            document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
        } else { // only name given, get cookie
            var cookieValue = null;
            if (document.cookie && document.cookie != '') {
                var cookies = document.cookie.split(';');
                for (var i = 0; i < cookies.length; i++) {
                    var cookie = jQuery.trim(cookies[i]);
                    // Does this cookie string begin with the name we want?
                    if (cookie.substring(0, name.length + 1) == (name + '=')) {
                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                        break;
                    }
                }
            }
            return cookieValue;
        }
    };

  4. #4
    Nessuno si prenerà la briga di individuare al posto tuo dove, in quella intera paginata di codice, si trova il problema.

    Bisogna prima che con la console degli errori individui tu dove sta, e poi con un problema limitato a poche righe di codice torni qui con quelle. la paginata intera di codici, capisci che è difficile uno ci si metta al posto tuo. Un codice limitato invece che so diciamo a 10 righe troverebbe risposte probabilmente.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    4

    Re: Problemi con Chat stile facebook

    Originariamente inviato da phpista
    Ciao a tutti!
    Allora ho un problema... io ho trovato questo codice che è una chat simile a quella di facebook... io nel mio file php ho messo una query che ciclando mi metta nella variabile $to il cognome e subito sotto tramite:
    Codice PHP:
    echo "[url='javascript:void(0)']","Chat With ""$to","[/url]","
    "

    stampo tutti i cognomi e in teoria cliccandoci mi si dovrebbe aprire la chat... Ma non funziona con tutti i cognomi! Non so perchè ma funziona solo con alcuni... con altri invece viene scritto in fondo alla pagina:
    javascript: void(0)

    Ovviamente prima di tutto metto
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/chat.js"></script>

    Vi allego nel post successivo il file chat.js . Intanto qualcuno può prenderl se servisse
    infatti il file è troppo lungo, è difficile trovare l'errore...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.