Mensagem privada ao se postar no perfil
3 participantes
Fórum dos Fóruns :: Ajuda e atendimento ao utilizador :: Questões sobre códigos :: Questões resolvidas sobre códigos Javascript e jQuery
Página 1 de 1 • Compartilhe
Mensagem privada ao se postar no perfil
Detalhes da questão
Endereço do fórum: https://mgstesteforum.forumeiros.com/
Versão do fórum: phpBB3
Acesso ao fórum:
[Tens de participar na questão para poderes visualizar o acesso]
Descrição
Boa tarde,
Estou tendo grande dificuldade para compreender o motivo de o código disponível no tutorial "Mensagem privada ao se postar no perfil" não estar funcionando.
- Código:
/\/(privmsg\?mode=post_profile(&u=[1-9][0-9]*)?|postp\/[1-9][0-9]*)/.test(document.location.href)&&$(function(){$("input[type='submit'][name='post']").click(function(){var c=$("#logout img").attr("title").replace(/^.* \[ (.*?) \]$/,"$1"),d=$("input[type='hidden'][name='username']").val();if($("input[type='text'][name='subject']").val()!=""&&$("#text_editor_textarea").val()!=""&&c!=d){$.ajaxSetup({async:!1});var a=0,b=/^.*\/(privmsg\?mode=post_profile&u=([1-9][0-9]*)|postp\/([1-9][0-9]*))$/;b.test(document.location.href)?a=document.location.href.replace(b,"$2$3"):b.test(document.referrer)&&(a=document.referrer.replace(b,"$2$3"));$.post("/privmsg",{"username[]":d,subject:"Nova mensagem do seu perfil",message:d+",\n\n"+c+" postou uma nova mensagem em seu perfil.\n\n"+(a?"Veja : http://"+document.location.host+"/u"+a+"wall":"Votre profil : {USERLINK}"),mode:"post",post:"Envoyer"});$.ajaxSetup({async:!0})}return!0})});
Minha principal dúvida é: tal como está no tutorial, esse código funcionaria normalmente no phpbb3? Se não, o que está errado nele?
Se estiver tudo certo com o código, incluirei as informações sobre o que já tentei fazer para contornar a situação e não obtive sucesso.
Em tempo, preciso dizer que AJAX é um tanto críptico para mim. Não compreendo ao todo o oque o $.ajaxSetup({async:!1})} e $.ajaxSetup({async:!0})} fazem. Imagino que iniciam uma co-rotina e, por conta disso, não consigo acompanhar via console.
Sem mais, agradeço desde já.
Atualização: Depois de revirar o código mais um pouco, descobri, ao menos em parte, o "erro". Por conta do uso do SCEditor, o elemento "#text_editor_textarea" do formulário, que é editado pelo script do SCEditor antes de enviar, ainda estava vazio quando o script em questão é executado. Assim, a condição if ($("input[type='text'][name='subject']").val() != "" && $("#text_editor_textarea").val() != "" && c != d) {...} retornava um valor falso e a função $.post(...) não era executada. Eu consegui contornar substituindo na condicional o elemento que retornava como falso por outro, o "#textarea_content > div > textarea", mas, ainda assim, me questiono se é o ideal e se isso não está sendo causado por algum erro interno do fórum. Deixo a postagem em aberto, haja vista que sigo com a dúvida sobre a origem do erro.
Última edição por Matt G. em 18.06.23 16:47, editado 3 vez(es)
Re: Mensagem privada ao se postar no perfil
Tornei a investigar o erro e, para além da solução provisória que descrevi, não obtive sucesso. Alguém já enfrentou algo parecido com o "#text_editor_textarea"?
Re: Mensagem privada ao se postar no perfil
Olá! Seja bem-vindo(a) ao suporte Forumeiros!Como acabou de inscrever-se, aqui estão alguns pontos importantes a saber:
|
Olá @Matt G.,
O tutorial acima já tem alguns anos, irei posteriormente verificar se necessita de atualzação.
Bom, com base na sua explicação, parece que encontrou uma solução alternativa para o problema ao substituir o elemento `#text_editor_textarea` por `#textarea_content > div > textarea`. É possível que o script do SCEditor esteja modificando a estrutura do DOM, resultando na falta de conteúdo no elemento original.
Embora essa solução alternativa possa funcionar, é importante investigar a origem do problema para garantir que não haja erros internos no fórum ou conflitos com o script do SCEditor. Aqui estão algumas sugestões para ajudar a identificar a causa raiz do erro:
1. Verifique se há mensagens de erro: Verifique o console do navegador em busca de possíveis erros ou avisos relacionados ao script do SCEditor ou ao código que está usando.
2. Verifique a ordem de execução: Certifique-se de que o script esteja sendo executado após o carregamento completo do SCEditor e de todos os elementos relevantes estarem disponíveis no DOM. Pode fazer isso colocando o código dentro de um evento `$(document).ready()` ou usando recursos específicos fornecidos pelo phpBB3 para manipulação de eventos.
3. Depure o código: Adicione instruções de `console.log` ao seu código para verificar os valores das variáveis e os passos da execução. Dessa forma, poderá identificar onde o problema ocorre e quais os valores corretos das variáveis.
Ao realizar essas etapas, estará em uma posição melhor para entender a origem do problema e corrigi-lo adequadamente.
Se ainda tiver dúvidas ou encontrar outros problemas, por favor, forneça mais detalhes, e ficarei feliz em ajudar.
Dei alguns ajustes no código acima:
- Código:
// Verifica se estamos na página de perfil ou de postagem
if (/\/(privmsg\?mode=post_profile(&u=[1-9][0-9]*)?|postp\/[1-9][0-9]*)/.test(document.location.href)) {
$(function() {
$("input[type='submit'][name='post']").click(function() {
var c = $("#logout img").attr("title").replace(/^.* \[ (.*?) \]$/,"$1");
var d = $("input[type='hidden'][name='username']").val();
// Verifica se o campo de assunto e o campo de mensagem não estão vazios
if ($("input[type='text'][name='subject']").val() !== "" &&
$("#text_editor_textarea, #textarea_content > div > textarea").val() !== "" &&
c !== d) {
$.ajaxSetup({ async: false });
var a = 0;
var b = /^.*\/(privmsg\?mode=post_profile&u=([1-9][0-9]*)|postp\/([1-9][0-9]*))$/;
if (b.test(document.location.href)) {
a = document.location.href.replace(b, "$2$3");
} else if (b.test(document.referrer)) {
a = document.referrer.replace(b, "$2$3");
}
$.post("/privmsg", {
"username[]": d,
subject: "Nova mensagem do seu perfil",
message: d + ",\n\n" + c + " postou uma nova mensagem em seu perfil.\n\n" +
(a ? "Veja: http://" + document.location.host + "/u" + a + "wall" : "Seu perfil: {USERLINK}"),
mode: "post",
post: "Envoyer"
});
$.ajaxSetup({ async: true });
}
return true;
});
});
}
Atenciosamente,
Sleep.
Re: Mensagem privada ao se postar no perfil
Tópico resolvidoTópico arquivado por inatividade por parte do autor, marcado como resolvido por ter solução apropriada à questão. |
tikky- Admineiro
- Membro desde : 13/01/2017
Mensagens : 7964
Pontos : 9219
Tópicos semelhantes
» Mensagem privada ao se postar no perfil
» [TUTORIAL] Mensagem privada ao se postar no perfil
» Deixar convida postar mensagem privada
» Pop-up mensagem privada
» pop up mensagem privada
» [TUTORIAL] Mensagem privada ao se postar no perfil
» Deixar convida postar mensagem privada
» Pop-up mensagem privada
» pop up mensagem privada
Fórum dos Fóruns :: Ajuda e atendimento ao utilizador :: Questões sobre códigos :: Questões resolvidas sobre códigos Javascript e jQuery
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos