JScript

Programação & Desenvolvimento


Você não está conectado. Conecte-se ou registre-se

[Resolvido] Usar o Chat box no modo "Arquivos"!

3 participantes

Ir para baixo  Mensagem [Página 1 de 1]

Júnior Duarte

Júnior Duarte
Membro
Membro

Olá amigos venho pedir ajuda pra tentar sanar um problema que obtive ao utilizar o código do referido tutorial.

O código apesar de funcionar, duplica as informações do chat. Necessitando um refresh na página para o duplicação sumir, voltando novamente depois de algumas outras entradas e saídas da Index do Fórum.

Ex: Entro no Fórum, os erros aparecem, dou um refresh na página o erro some, entro em algum tópico, quando retorno a index o erro está novamente.

Segue imagens do erro:
[Resolvido] Usar o Chat box no modo "Arquivos"! 4ioOZKB

Aqui como fica as mensagens, a frase "Mensagens Reiniciadas por Júnior Duarte" divide no caso as partes repetidas:
[Resolvido] Usar o Chat box no modo "Arquivos"! FDN4xvl

Uso no Fórum esse código para personalizar o chatbox:

 E o código de login automático do @waghcwb.

http://invitesexpress.omeuforum.net/forum

JScript

JScript
Administradores
Administradores

Olá!

Eu tenho umas teorias sobre esses bugs, mas experimente desativar o "login automático" do @waghcwb para ver se o problema persiste ok?

Aguardo seu retorno,

JS

http://autoitbrasil.com

DiogoR.

DiogoR.
Membro
Membro

JScript escreveu:experimente desativar o "login automático" do @waghcwb para ver se o problema persiste ok?

Olá,

O erro que ele citou acima que aparece duas vezes "Você está desconectado!" também aparece em meu fórum e eu não uso mais nenhum código em meu fórum sem ser o deste tutorial.
[Resolvido] Usar o Chat box no modo "Arquivos"! KOXdoOq

Até Mais....

Júnior Duarte

Júnior Duarte
Membro
Membro

Olá @JScript fiz como sugerido e o erro perdura.

http://invitesexpress.omeuforum.net/forum

JScript

JScript
Administradores
Administradores

Júnior Duarte escreveu:Olá @JScript fiz como sugerido e o erro perdura.
Ok, então testa esse código abaixo e se ele funcionar normalmente eu troco o do tutorial por ele:
Código:

// Redefine function!
function insertChatBox(chatbox_id, chatbox_url) {
   return insertChatBoxNew(chatbox_id, chatbox_url);
}
// Redefine function!
function insertChatBoxNew(chatbox_id, chatbox_url) {
   document.getElementById(chatbox_id).innerHTML = '<iframe src="/chatbox/index.forum?archives=1" id="frame_chatbox" scrolling="no" width="100%" height="100%" marginwidth="0" marginheight="0" frameborder="0"></iframe>';
}

$(function() {
   if (_userdata.session_logged_in) {
      chat_archives();
      $('#frame_chatbox').load(function () {
         chat_archives();
      });
   }
});

function chat_archives() {
   var oIframe = (document.getElementById("frame_chatbox").contentWindow || document.getElementById("frame_chatbox").contentDocument),
      script = oIframe.document.createElement("script");

   var chatbox_script = function () {
      // "For" asynchronous loop, faster and does not lock the browser interface when you have many messages!
      (function ($) {
         $.assyncFor = function (arr, callback) {
            for (var i = 0, len = arr.length; i < len; ++i) {
               var boundCallback = callback.bind(null, i, arr[i]);
               setTimeout(boundCallback, i);
            }
            return this;
         };
      }(jQuery));

      var interval = 0;

      $("#chatbox_option_co, #chatbox_option_disco").bind("click", function () {
         $("#chatbox").empty();
      });

      Chatbox.prototype.refresh = function (data) {
         if (data.error) {
            $("body").html(data.error)
         } else {
            if (this.connected) {
               $("#chatbox_display_archives").show();
               $("#chatbox_option_co").hide();
               $("#chatbox_option_disco, #chatbox_footer").show();
               $("#chatbox_messenger_form").css('display', 'block');
               $("#chatbox_messenger_form").css('visibility', 'visible');
               $(".format-message").each(function () {
                  var name = $(this).attr('name');
                  var value = my_getcookie('CB_' + name);
                  $(this).prop('checked', parseInt(value) ? true : false)
               });
               this.format();
               if (data.lastModified) {
                  this.listenParams.lastModified = data.lastModified
               }
               if (!interval) {
                  interval = setInterval(function () {
                     chatbox.init();
                  }, 5000);
               }
            } else {
               clearInterval(interval);
               interval = 0;
               $("#chatbox_option_co").show();
               $("#chatbox_option_disco, #chatbox_footer").hide();
               $("#chatbox_display_archives").hide();
               $("#chatbox_messenger_form").css('display', 'none');
               $("#chatbox_messenger_form").css('visibility', 'hidden');
            }
            if (data.users) {
               this.users = [];
               $(".online-users, .away-users").empty();
               $(".member-title").hide();
               for (var i in data.users) {
                  var user = data.users[i];
                  this.users[user.id] = user;
                  var username = "<span style='color:" + user.color + "'>" + (user.admin ? "@ " : "") + "<span class='chatbox-username chatbox-user-username' data-user='" + user.id + "' >" + user.username + "</span>" + "</span>";
                  var list = user.online ? '.online-users' : '.away-users';
                  $(list).append('<li>' + username + '</li>')
               }
               if (!$(".online-users").is(':empty')) {
                  $(".member-title.online").show()
               }
               if (!$(".away-users").is(':empty')) {
                  $(".member-title.away").show()
               }
            }
            if (data.messages) {
               var scroll = !this.messages || this.messages.length != data.messages.length;
               this.messages = data.messages;

               if (this.messages) {
                  var oThis = this; // Here we save the current "this" for use inside "For" asynchronous loop!

                  $.assyncFor(oThis.messages, function (index, content) { // The "For" asynchronous loop...
                     // Here checks if there is already a message in the DOM, if already, not need to process the same message!
                     if ($(".shout-" + index).length) {
                        return oThis;
                     }

                     var message = content, //                                       |ClassName index|
                        html = "<p class='chatbox_row_" + (index % 2 == 1 ? 2 : 1) + " clearfix shout-" + index + "'>" + "<span class='date-and-time' title='" + message.date + "'>[" + message.datetime + "]</span>";

                     if (message.userId == -10) {
                        html += "<span class='msg'>" + "<span style='color:" + message.msgColor + "'>" + "<strong> " + message.msg + "</strong>" + "</span>" + "</span>"
                     } else {
                        html += "<span class='user-msg'>";
                        if (oThis.avatar) {
                           html += "   <span class='cb-avatar'><img src='" + message.user.avatar + "' /></span>"
                        }
                        html += "   <span class='user' style='color:" + message.user.color + "'>" + "<strong> " + (message.user.admin ? "@ " : "") + "<span class='chatbox-username chatbox-message-username'  data-user='" + message.userId + "' >" + message.username + "</span>&nbsp;:&nbsp;" + "</strong>" + "</span>" + "<span class='msg'>" + message.msg + "</span>" + "</span>"
                     }
                     html += "</p>";

                     /**
                      * Here the "append" will not make slow the code execution since it is not within a synchronous loop,
                      * but instead in an asynchronous loop that schedules the execution later!
                      */
                     $("#chatbox").append(html);

                     if ((index + 1) == oThis.messages.length) {
                        if (scroll) {
                           $("#chatbox")[0].scrollTop = $("#chatbox").prop("scrollHeight") * 2
                        }
                     }
                  });
               }
            }
         }
      };
      $("#chatbox").empty();
      chatbox.init();
      interval = setInterval(function () {
         chatbox.init();
      }, 5000);
   };

   script.type = "text/javascript";
   script.innerHTML = "(" + chatbox_script.toString() + ")();";
   oIframe.document.getElementsByTagName("head")[0].appendChild(script);
}

Obrigado pelos feedbacks!

JS

http://autoitbrasil.com

Júnior Duarte

Júnior Duarte
Membro
Membro

Olá amigo @JScript notei com o novo código que a duplicação some, embora está ocasionando outro problema.

Ele está dividindo o chat, como isso? veja abaixo, a frase "Mensagens reiniciadas por Júnior Duarte" e o local onde se divide:
[Resolvido] Usar o Chat box no modo "Arquivos"! QqxwTjC

A conversa está sendo cortada, onde o inicio está ficando abaixo e o final da conversa fica acima, o erro ocorre ao se logar no Fórum. Depois disso um refresh e o chat fica normal.

http://invitesexpress.omeuforum.net/forum

JScript

JScript
Administradores
Administradores

@Júnior Duarte
Esse ai está mais estranho, porém explicável...

Aguarde eu fazer alguns testes e melhorias no código ok?

JS

http://autoitbrasil.com

Júnior Duarte

Júnior Duarte
Membro
Membro

Ok amigo, estamos no aguardo.

http://invitesexpress.omeuforum.net/forum

JScript

JScript
Administradores
Administradores

Júnior Duarte escreveu:Ok amigo, estamos no aguardo.
Amigo, eu preciso das seguintes informações:

1- Qual navegador você usa, incluindo a versão;
2- Sistema Operacional;



Edit: Você já pode testar o código do tutorial: http://jscript.forumeiros.com/t771-usar-o-chat-box-no-modo-arquivos

JS



Última edição por JScript em Qua 25 Mar 2015, 6:52 pm, editado 1 vez(es) (Motivo da edição : Novo código!)

http://autoitbrasil.com

Júnior Duarte

Júnior Duarte
Membro
Membro

Olá amigo, agradeço o retorno. O Código está perfeito todos os possíveis erros não aparecem mais. Mais uma vez parabéns pelo código.

http://invitesexpress.omeuforum.net/forum

Conteúdo patrocinado



Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos