Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

176
Visualizações
cookie possibly blocking clipboard API

I have this bit of code below that essentially on click of an a tag copies the text of an input field to the clipboard and then opens a new tab where the user pastes the text.

This all works completely fine UNTIL the cookie is set. I have tried it with testing 10 of the different a tags before the cookie is set.

Once the cookie is set, the new tab will still open, the input field I am copying the text from still updates, but if I paste into notepad or the window that opens, it will be whatever was copied last and not the most up to date. If I remove the cookie and reload everything goes back to how it should function.

So I am not sure why the cookie being set would stop the clipboard from updating.

 //Set Cookie Function
 function setCookie(cname, cvalue, exdays) {
    const d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    let expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

//Get Cookie Function
function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
        var end = document.cookie.indexOf(";", begin);
        if (end == -1) {
        end = dc.length;
        }
    }
    // because unescape has been deprecated, replaced with decodeURI
    //return unescape(dc.substring(begin + prefix.length, end));
    return decodeURI(dc.substring(begin + prefix.length, end));
} 

$(document).on('click', '.pop-top ul li a', function() {
    var copiedRole = $(this);
    $('#copyText').val(copiedRole.text());
    navigator.clipboard.writeText($('#copyText').val());
    
    var acknowledgeExists = getCookie("acknowledge");

    if(acknowledgeExists == null) {
        $('#copyMessage, .frosted').addClass('show');
    } else {
        window.open('[redacted]', '_blank');
    }
});

//Create Cookies
$("#acknowledge").on('click', function() {
    $('#copyMessage, .frosted').removeClass('show');
    window.open('[redacted]', '_blank');

    if($('#never').is(':checked')) {
        setCookie("acknowledge", "yes", 1);
    }
});
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

So it turns out that it was not the cookie, but the window.open firing immediately. MDN docs for the clipboard API note that the tab must be active. So even though my code has the write to clipboard function before the cookie check, it still would fire quick enough to prevent it.

While not an ideal solution wrapping the window.open in the cookie if/else in a setTimeout for 1 second works fine.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda