Jump to content

Omar~

Members
  • Content count

    960
  • Joined

  • Last visited

  • Days Won

    15

Posts posted by Omar~


  1. Aqui eu tratei justamente de assunto de caracteres unicode:

    https://github.com/Spell-Master/sm-web/blob/master/javascript/AjaxRequest/AjaxRequest.js#L224

    E não há problema algum até agora quanto a uso de emoticons nos métodos de protocolo POST desse script.

     

    A questão mesmo se refina no tratamento pelo lado do servidor.

    No caso do PHP:

    $salvar = mb_convert_encoding(htmlentities($conteudo_com_emoji), 'UTF-8', 'ASCII');

    Não sei enquanto ao ASP pois não uso essa porcaria.


  2. https://chrome.google.com/webstore/detail/mobile-browser-emulator/lbofcampnkjmiomohpbaihdcbjhbfepf?hl=pt-BR (Desnecessário usar o script que mencionei antes é bem mais eficaz)

     

    Ou simplesmente pressione (CTRL + Shift + i) "Também usar o script é bem mais eficaz"

     

    Também mas não necessariamente necessário:

    Spoiler
    
    /* 
        Media accept
        Created on : 19/10/2016, 17:30:28
        Author     : Spell Master (Omar Pautz)
    */
    
    @media (max-width: 1024px) {
    }
    
    @media (max-width: 900px) {
    }
    
    @media (max-width: 768px) {
    }
    
    @media (max-width: 700px) {
    }
    
    @media (max-width: 600px) {
    }
    
    @media (max-width: 530px) {
    }
    
    @media (max-width: 479px) {
    }
    
    @media (max-width: 400px) {
    }
    
    @media (max-width: 320px) {
    }
    
    @media (max-width: 240px) {
    }

     

     

    Completando o chrome só não é o pior browser que existe porque existe o Edge e o IE. E entrando o termo "developer" esses se tornam piores ainda.


  3. Não com PHP e sim com javascript.

    Pois isso se trata da interação usuário X página renderizada.

    <form>
        <div id="mostar_valor"></div>
        <input class="olhar_valor" type="checkbox" name="exemplo" value="algum_valor" />
    </form>
    
    <script>
        function exibirValor(e) {
            var alvo = e.target, mostrar = document.getElementById('mostar_valor');
            if (alvo.checked) {
                mostrar.innerText = alvo.value;
            } else {
                mostrar.innerText = null;
            }
        }
        document.querySelector('.olhar_valor').addEventListener('change', exibirValor, false);
    </script>

     


  4. @Biel. Entendo sua preocupação pois essa já foi a minha.

    Tenha e mente que hoje em dia os browsers só redireciona até 450px aproximados em média (no Windows e MAC), pois essa a tela dos Smartfones de hoje em dia (Quem começou isso foi o browser Opera).

    Veja quando eu comecei a escrever esse CSS: https://github.com/Spell-Master/sm-web/blob/master/css/sm-default.css

    Eu ainda me retia a resoluções inferiores aos primeiros smartfones que no máximo atingiam 250 pixel's (que foi os primórdios da navegação web móvel), sendo que como disse hoje em dia nenhum é menor que 450px... aliás pixel não é a media usada para esse calculo e sim REM então hoje em dia o resolução mínima seria (15.625 REM)

    Apesar que meu CSS padronizado que dar para desenhar 99% de um layout ainda dar suporte a resoluções menores que essa atual, então serão removidas na próxima atualização que eu fazer.

    O que eu quero dizer é que não precisa calibrar x elementos para milhares de resoluções, pois você tem que pensar em que aparelho está sendo visualizado.

    Porque criar algo que se adapte a um usuário que fica modificando a tela do browser é perder tempo e esforço.

     

    Você deve se preocupar com o landscape (panorama) e não com a resolução.

    • Se você estiver numa resolução em média de "30 REM" aproximados quer dizer que você está vendo em um smartfone em modo retrato.
    • Se você estiver numa resolução inferior "64 REM" aproximados quer dizer que você está vendo em um smartfone em modo paisagem ou em um tablet em modo retrato.
    • Se você estiver numa resolução inferior "120 REM" aproximados quer dizer que você está vendo em um tablet em modo paisagem ou em um monitor de 24 polegadas.
    • Se você estiver numa resolução maior ou próximo a "120 REM" quer dizer que você está vendo em  em um monitor FULL-HD.
    • Fora isso você já entrou em 4K.

  5. Eu particularmente acho desnecessário uma ferramenta para tal finalidade.

    Durante o desenvolvimento costumo fazer algo como isso:

    <div id="resolucao" style="position: fixed; bottom: 0; left: 10px; padding: 10px 20px; background: black; color: white;"></div>
    <script>
      var res = document.getElementById('resolucao');
      res.innerText = window.innerWidth;
      window.onresize = function () {
        res.innerText = window.innerWidth;
      };
    </script>

    Assim sendo, bastando arrastar o tamanho da janela do browser que a qualquer momento eu terei as dimensões da resolução.

    Depois da aplicação pronta é só apagar isso e entregar para o cliente.

     

    3 horas atrás, Biel. disse:

    não uso o recurso que tem no firefox, porque é absurdamente lento

    Não mesmo, essa ferramenta do firefox é muito eficaz o problema deve ser seu layout ou mesmo sua aplicação que usa recursos desnecessários e desorientados por isso a lentidão.


  6. Como eu disse:

    - De onde vem a informação da sub-categoria e como isso é obtido?

    Pois bem, independente dessa minha pergunta, qualquer dados deve está presente o javascript para que quando alterar o valor de categoria temos algo para preencher as subcategorias.

    Optei por um JSON com os dados para subcategoria, onde apenas tenho um índice para saber que sub-categoria pertence a cada categoria.

    Usei o PHP, para criar o json, mas a abordagem fica só com o javascript mesmo.

    No mais o exemplo eu escrevi em cada linha o que é feito (espero que seja algo como isso)

    Spoiler
    
    <?php
    $categorias = [
        ['id' => 1, 'nome' => 'Categoria 1'],
        ['id' => 2, 'nome' => 'Categoria 2'],
        ['id' => 3, 'nome' => 'Categoria 3'],
        ['id' => 4, 'nome' => 'Categoria 4']
    ];
    $subcategoria = [
        ['id' => 1, 'relacao' => 1, 'nome' => 'Sub-Categoria 1'],
        ['id' => 2, 'relacao' => 1, 'nome' => 'Sub-Categoria 2'],
        ['id' => 3, 'relacao' => 2, 'nome' => 'Sub-Categoria 3'],
        ['id' => 4, 'relacao' => 2, 'nome' => 'Sub-Categoria 4'],
        ['id' => 5, 'relacao' => 3, 'nome' => 'Sub-Categoria 5'],
        ['id' => 6, 'relacao' => 3, 'nome' => 'Sub-Categoria 6'],
        ['id' => 7, 'relacao' => 4, 'nome' => 'Sub-Categoria 7'],
        ['id' => 8, 'relacao' => 4, 'nome' => 'Sub-Categoria 8'],
        ['id' => 9, 'relacao' => 4, 'nome' => 'Sub-Categoria 9'],
        ['id' => 10, 'relacao' => 4, 'nome' => 'Sub-Categoria 10']
    ];
    $dados = json_encode($subcategoria);
    ?>
    
    <select name="categoria" id="categoria">
        <option value="">Selecione a Categoria...</option>
        <?php
        foreach ($categorias as $value) {
            echo ("<option value=\"{$value['id']}\">{$value['nome']}</option>");
        }
        ?>
    </select>
    
    <select name="subcategoria" id="subcategoria"></select>
    
    <script>
        var valoresEmJson = JSON.parse('<?= $dados ?>'), // Então aqui eu tenho o JSON com todas sub-categorias
            categoria = document.getElementById('categoria'),
            subcategoria = document.getElementById('subcategoria');
    
        function subValor(e) {
            var valor = e.target.value; // Obtenho o valor da "categoria"
            if (valor) { // Vejo se "categoria" tem mesmo algum valor
                removeOpcao(); // Primeiro limpar todas opções inseridas
                valoresEmJson.forEach(function (indice) { // Pecorro o JSON
                    if (indice.relacao == valor) { // Quando a relação dos índices em "subcategoria" for igual ao valor selecionado
                        // Mando criar novas opções em "subcategoria"
                        // Enviando como parâmetro o id e o nome, no índice do JSON
                        criarOpcao(indice.id, indice.nome);
                    }
                });
            }
        }
    
        function removeOpcao() { // Apenas limpa as opções do seletor "subcategoria"
            while (subcategoria.childNodes.length) {
                subcategoria.removeChild(subcategoria.firstChild);
            }
        }
    
        function criarOpcao(id, nome) {
            var novoOption = document.createElement('option'); // Crio a tag <option>
            novoOption.value = id; // Seu valor é o "id" do índice obtido por parâmetro
            novoOption.innerText = nome; // O texto é o nome do índice obtido por parâmetro
            subcategoria.appendChild(novoOption); // Anexo a opção dentro do seletor subcategoria
        }
    
        categoria.addEventListener('change', subValor, false); // Quando o seletor categoria é alterado
    
        if (categoria.selectedIndex) { // Se algum valor no seletor "categoria" estiver como a propriedade "selected"
            var evento = new Event('change'); // Crio o evento "change"
            categoria.dispatchEvent(evento); // Despacho o evento sem mesmo o usuário alterar o seletor
        }
    </script>

     

    Note que a categoria 4 possui 4 sub categorias e as demais somente 2, pois o que interessa é saber a relação, pois é isso de determina a qual categoria um sub pertence.


  7. Deixa eu ver se entendi....

    O seletor "categoria"  tem lá suas opções, mas o seletor "subcategoria" não.

    Ao alterar "categoria" obtemos seu value, então "subcategoria" terá as opções correspondentes ao atributo "data"

    Resumo: "seletor" no valor for 1, as opções  de "subcategoria" só vão existir as que forem data-option="1"

    É isso?

     

    Se for, de onde e como vão ser as opções do segundo seletor?

    Porque essas opções devem ser criadas e injetadas dentro do segundo seletor, mas criar-las com qual informação?


  8.  

    Use uma variável global para identificar o audio em execução.

    Toda vez que um novo audio é tocado pegue a informação da var global e dar pause no que estiver tocando e play na atual.

    Vejamos um exemplo:

    Spoiler
    
    <button class="tocar_audio" data-alvo="exemplo_a">Tocar Audio A</button>
    <button class="tocar_audio" data-alvo="exemplo_b">Tocar Audio B</button>
    
    <audio id="exemplo_a">
        <source src="audio_a.mp3" type="audio/mpeg">
    </audio>
    
    <audio id="exemplo_b">
        <source src="audio_b.mp3" type="audio/mpeg">
    </audio>
    
    <script>
        var variavelGlobal = null;
    
        document.querySelectorAll('.tocar_audio').forEach(function (e) {
            e.addEventListener('click', tocarAudio, false);
        });
    
        function tocarAudio(e) {
            var alvo = (e.target).dataset.alvo;
            if (variavelGlobal) {
                document.getElementById(variavelGlobal).pause();
            }
            document.getElementById(alvo).play();
            variavelGlobal = alvo;
        }
    </script>

     

     

    Fica meio esquisito pois se a pessoa clicar novamente no audio anterior ela vai continuar ouvindo de onde parou pois o HTML5 não tem recurso para parar uma mídia.

    Porém isso é possível fazer criando a tag <audio> dinamicamente, e quando tocar outro áudio é só apagar o html a tag anterior assim você "mata" a execução substituindo por outro.


  9. Acho que saquei a situação.

    Você não possui a lista de bairros e será cadastrado por um usuário ou por você periodicamente.

     

    Primeiramente a tabela de bairros deve receber uma nova coluna também para identificar o estado

    Pois a consulta deve ser estado + cidade + bairro. Pois existem milhares de bairros com nome repetidos em vários estados.

     

    E como puxar o bairro?

    O primeiro seletor vai carregar o estado onde traremos o ID's dos estados.

    SELECT * FROM estados

    Compomos o html com as informações

    <form method="POST">
      <select name="carregar_cidades">
        <option value="">Selecionar Estado...</option>
        <?php foreach($resultado_do_banco as $value) { ?>
            <option value="<?= $value['id_estado'] ?>"><?= $value['estado'] ?></option>
        <?php } ?>
      </select>
    </form>

    Ao alterar o valor de carregar_cidades, pegamos o ID do estado e buscamos as cidades com essa informação:

    SELECT * FROM cidades WHERE id_estado = '{$id_do_estado}'

    Compomos o html do novo seletor com as informações:

    <form method="POST">
      <input type="hidden" name="id_estado" value="<?= $id_do_estado ?>" />
      <select name="carregar_bairros">
        <option value="">Selecionar Cidades...</option>
        <?php foreach($resultado_do_banco as $value) { ?>
            <option value="<?= $value['id_cidade'] ?>"><?= $value['cidade'] ?></option>
        <?php } ?>
      </select>
    </form>

    Ao alterar carregar_bairros vamos buscar os bairros usando a informação do estado e da cidade

    SELECT * FROM bairros WHERE id_cidade = '{$id_da_cidade}' AND id_estado = '{$id_do_estado}'
    -- lebrando que a coluna "id_estado" é a coluna nova que identifica o estado

     

    Bom, a estrutura HTML já deu para perceber como deve ser feita não é?

     

    Uma questão boa de se abordar aqui é:

    Se a pessoa carregar a query de bairros e não retornar nenhum valor é porque não tem bairro algum cadastrado para aquela cidade.

    Então seria interessante definir a estrutura de um input text para que ela possa manualmente escrever seu bairro.

    O mesmo valeria em criar um option no seletor caso haja resultado, mas não o bairro que ela procura.

    Ao selecionar essa opção uma caixa de texto é inserida no html para ela manualmente escrever o bairro.

     


  10. Atá, entendi...

    Bom o que vai fazer é tentativa e erro.

    Vamos usar um divisor pai e vários filhos dentro desse pai.

    O divisor pai fica fixo na parte inferior da tela.

    Mais ou menos assim:

    <div class="pai">
      <div class="filho">1</div>
      <div class="filho">2</div>
      <!-- quantos filhos forem necessários -->
    </div>

    No pai damos as seguintes propriedades de CSS:

    .pai {
      z-index: 1;
      position: fixed;
      width: 100%; 
      bottom: 0;
      left: 0;
      text-align: center
    }

     

    Os filhos é que fazemos a coisa acontecer, use uma calculadora para poder calcular sua largura dividindo 100 pela quantidade de filhos.

    .filho {
      width: 12.5%; /* 12% já basta? */
      display: inline-block; /* Alinhando um ao lado do outro */
      padding: 1rem /* "1rem = 16px" quanto de espaçamento interno ? */
    }

    Por isso tentativa e erro, pois sua largura deve ser o suficiente para abrigar os demais componentes internos ao filho e ainda permiti-los que caibam em uma linha do divisor pai.

     

    Agora a questão:

    Em 21/09/2020 at 10:52, lezão disse:

    no celular gostaria que a div desses quadrados aparecessem  de 3 em 3 itens

    Use o media-query para redefinir a largura de cada filho de acordo com a resolução da tela.

    Nesse caso aqui quando a resolução máxima não ultrapassar 600 pixels digo que a largura do filho passa a ser outra.

    @media (max-width: 600px) {
      .filho {
        width: 6.25rem; /* 6.25rem = 100px */
      }
    }

     


  11. O problema dos bairro é que temos mais de 5k de cidades no território brasileiro. Quantos bairros em cada cidade?

    É facilmente chegamos a um array com mais de 1/2/3/4...... milhão de índices que teria de ser feito na mão, fora o trabalho de consulta individual de cada.

     

    Confesso que faria facilmente isso, mas levaria pelo menos uns 2 meses para catalogar cada bairro em cada cidade e preparar o script para ficar operacional.


  12.  

    1 hora atrás, lezão disse:

    como fazer essas imagens ficar a frente do slideshow

    Que imagens?

     

    1 hora atrás, lezão disse:

    qnd responsivo aparecer de 3 em 3

    Qual resolução?

    Quando que aparece em 3 em 3?

    O que aparece em 3 em 3?

     

    Faltou você apresentar um código, explicar de forma coesa seu problema e se possível uma imagem demostrando o resultado final.

     

    Tente o "z-index" pois isso define a importância  de um elemento no documento.


  13. Olha esse termo de selecionar um estado e já carregar cidades nem precisa de um apelo pelo servidor pode ser feito através somente do javascript.

    Existe esse maravilhoso script para essa finalidade https://github.com/robertocr/cidades-estados-js

     

    Agora o caso do bairro e tal até que daria para fazer um upgrade, mas seria um trabalho minucioso e teria que consultar o senso pra ter uma relação dos bairros de cada cidade. Ou seja daria trabalho pra caramba....


  14. De onde vem e quais os requisitos para uso do horário de término?

     

    Deduzo que seja algo dinâmico sem intervenção humana e só por display mesmo, então nesse caso veja:

    $resultado_do_banco = date('H:i:s'); // Isso pode ser o horário obtido através da query
    $termino = date('H:i:s', strtotime("{$resultado_do_banco} +1 hour")); // Obtem a hora atual e almenta 1 hora a mais em relação com o horário vindo da query.
    
    var_dump($termino);

     


  15. Primeiro: Faça correções na estrutura do HTML "está com erro", de cara vejo isso, mas pode haver mais outros tipos se levar isso em consideração.

    23 horas atrás, Leonel57 disse:

    <nav class = menulateral>

     

    Segundo: Cuidado com definições levianas no CSS

    23 horas atrás, Leonel57 disse:

    p { text-align:center; }

     

    Enfim, se eu entendi você que as imagens uma ao lado da outra certo?

    Nesse caso esqueça das imagens olhe para a estrutura HTML como ela é! Blocos dentro de blocos etc, esse é o segredo de fazer qualquer layout com facilidade...

    Citar

    Então devo ter um bloco pai que abriga blocos filhos alinhados uns ao lado do outro.

    Assim sendo posso adicionar o que quiser dentro dos filhos que esses herdarão a arquitetura de seus parentes.

     

    <style>
        * {margin: 0; padding: 0; box-sizing: border-box}
    
        .lugar_das_images {
            text-align: center
        }
        .imagem_aqui {
            display: inline-block
        }
        .imagem_aqui > img {
            width: 100%;
            max-height: 250px /* Qual é altura máxima que a imagem pode ter? Isso influenciará em sua largura */
        }
    </style>
    
    <div class="lugar_das_images">
        <div class="imagem_aqui">
            <img src="????????.???" alt="Exemplo" />
            <p>Imagem em linha</p>
        </div>
        <div class="imagem_aqui">
            <img src="????????.???" alt="Exemplo" />
            <p>Imagem em linha</p>
        </div>
        <div class="imagem_aqui">
            <img src="????????.???" alt="Exemplo" />
            <p>Imagem em linha</p>
        </div>
    </div>

     


  16. Fazendo uma leitura qualquer na tal tabela.

    Se der erro é porque a tabela não existe.

    Com mysqli não sei dizer como proceder com o erro porque não uso, entretanto com PDO você tem o PDOException para tratamento de erros.


  17. Você pode está usando só HTML e CSS para algo tão simples

    Veja:

    Spoiler
    
    <style>
        /* Só por questão estética do exemplo */
        input[type=text]{padding:.75rem;width: 49%}
        .botao_selecionar{padding:.5rem 1rem;color:#fff;background-color:#ccc;cursor:pointer}
        
        /* Esconde os inputs e os divisores */
        #fisica, #juridica,
        #dados-fisica, #dados-juridica {
            display: none
        }
        /* Quando marcado algum input mostra o seu correpondente */
        #fisica:checked ~ #dados-fisica,
        #juridica:checked ~ #dados-juridica {
            display: block
        }
    </style>
    
    <input type="radio" name="tipo" value="1" id="fisica" checked="" />
    <input type="radio" name="tipo" value="2" id="juridica" />
    
    <p>Cadastrar que tipo?</p>
    <label for="fisica" class="botao_selecionar">Pessoa Física</label> |
    <label for="juridica" class="botao_selecionar">Pessoa Jurídica</label>
    
    <hr />
    
    <div id="dados-fisica">
        <p>Aqui você coloca todos inputs para pessoa física</p>
        <input type="text" name="exemplo_a" placeholder="algum dado para pesso física"/>
        <input type="text" name="exemplo_a_b" placeholder="algum dado para pesso física"/>
    </div>
    
    <div id="dados-juridica">
        <p>Aqui você coloca todos inputs para pessoa juridica</p>
        <input type="text" name="exemplo_b" placeholder="algum dado para pesso jurídica"/>
        <input type="text" name="exemplo_b_b" placeholder="algum dado para pesso jurídica"/>
    </div>

     

     

    Agora ao caso do php...

    Perceba que a tag <input> radio possui o name['tipo'] então esse dado deve se verificado quando o formulário for submetido.

    Quando o tipo for 1 você só irá processar dados de post contido na tag <div> que foi mostrada ignorando os dados de input da outra, fazendo o mesmo mais ao inverso quando o tipo for 2.

     

    Pois quando o formulário for submetido todos os dados serão enviados, mas usando esse truque você pode saber qual foi o modelo da postagem.


  18. ...No caso quando vazio fazer o update limpando a coluna na tabela?

    Ou ao está vazio não fazer update desse campo? Nesse caso:

    <form method="POST" action="">
        <input type="text" name="alguma_coisa_a" placeholder="alguma coisa a" />
        <input type="text" name="alguma_coisa_b" placeholder="alguma coisa b" />
        <input type="text" name="alguma_coisa_c" placeholder="alguma coisa c" />
        <input type="text" name="alguma_coisa_d" placeholder="alguma coisa d" />
        <input type="text" name="alguma_coisa_e" placeholder="alguma coisa e" />
        <input type="hidden" name="alguma_coisa_f" value="valor oculto" />
        <input type="checkbox" name="alguma_coisa_g" value="1" checked="" />
        <input type="checkbox" name="alguma_coisa_h" />
        <button>Executar Exemplo</button>
    </form>
    
    <?php
    $post = filter_input_array(INPUT_POST, FILTER_DEFAULT);
    if ($post) {
        $naoVazios = [];
        foreach ($post as $key => $value) {
            if (!empty($value) && $value != '0') {
                $naoVazios[$key] = $value;
            }
        }
        if (count($naoVazios)) {
            echo ("<pre>");
            var_dump($naoVazios);
            echo ("</pre>");
        }
        
        /* Não sei se se vai funfar, pois não uso a "jossa do sqli" a uns 10 anos ou mais */
        // UPDATE clientes SET " . implode(', ', $naoVazios). " WHERE id_cliente = " .$_POST['id'];
    }

     

    Atenção ao valor de $_POST['id'] se esse valor for -1 ou um type_script seu banco de dados corre sérios riscos.

    De qualquer forma todos os dados devem ser analisados, checados,  filtrados, limpos, re-checados só então podem ser inseridos em uma query...


  19. Uma forma seria através de uma variável global.

    Cada botão tem um valor que é comparado com a global quando um botão de valor maior que a VAR é clicado avisa que tem que clicar no anterior primeiro, se esse foi clicado a VAR global passa ter o valor do botão exemplo:

    Spoiler
    
    Obs.::::! Não testei apenas escrevi aqui, mas funciona a lógica
    
    <button onclick="checagemGlobal(1)">Click para prosseguir A</button>
    <button onclick="checagemGlobal(2)">Click para prosseguir B</button>
    <button onclick="checagemGlobal(3)">Finalizar</button>
    <div id="avisar"></div>
    
    <script>
      var variavelGlobal = 0;
      var resposta = document.getElementById('avisar');
    
      function checagemGlobal(entrada) {
        if (entrada === 2 && variavelGlobal < 1) {
          resposta.innerHTML = '<p>Você tem que clicar no botão A primeiro</p>';
        } else if (entrada === 3 && variavelGlobal < 2) {
          resposta.innerHTML = '<p>Você tem que clicar no botão B primeiro</p>';
        } else {
          switch (entrada) {
            case 1:
              resposta.innerHTML = null;
              console.log('Fazer alguma coisa quando o botão A for clicado');
              break;
            case 2:
              resposta.innerHTML = null;
              console.log('Fazer alguma coisa quando o botão B for clicado');
              break;
            case 3:
              resposta.innerHTML = null;
              console.log('Fazer alguma coisa quando Finalizar for clicado');
              break;
          }
          variavelGlobal = entrada;
        }
      }
    </script>

     

     

     

    Você pode também está criando os botões seguintes assim que uma tarefa é concluída, para isso você vai precisar de:

     


  20. Mas @wanderval ele pode usar o atributo "data" e obter quantos dados quiser....

    Só que como você mesmo diz (é mais lento para processar):

    4 horas atrás, wanderval disse:

    Isso que você quer tem um preço

     

    <div
        id="algum"
        data-a="alguma_coisa_1"
        data-b="alguma_coisa_2"
        data-c="alguma_coisa_3"
        data-d="alguma_coisa_4">
      ... e por aí vai...
    </div>
    <script>
        console.log(document.getElementById('algum').dataset);
    </script>

     


  21. Isso não é possível só dessa forma.

    Uma vez acessado um endereço o servidor irá enviar a estrutura HTML do documento para o browser da pessoa.

    O browser de pessoa "X" uma vez preenchido um input ficará salvo no diretório temporário de arquivos dessa pessoa. Portanto pessoa "Y" não tem acesso a isso porque não está na máquina dele.

     

    No entanto sim, é possível roubar essas informações, seja dados de input, session ou cookies etc.., mas isso é questão de 99% vulnerabilidade por parte da pessoa e 1% da aplicação ao qual pode-se prever através de segurança do servidor, evitando XSS e trabalhando com criptografia de dados. Assim sendo se esses dados vazam é por insegurança da máquina do usuário.

     

    Tenha em mente que qualquer HTML, CSS e JavaScript é entregue ao(s) usuário(s) e não dados inter-serve ou back-end.

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.