He buscado a través de preguntas similares, pero no parece estar respondiendo lo que estoy buscando
Básicamente, tengo este sitio web, donde un emoji (vamos a usar emoji para que sea fácil) se genera aleatoriamente y se guarda en el almacenamiento local. Como saben, no es efectivo, ya que un usuario puede simplemente borrar su historial y ese valor aleatorio se estaba eliminando. ejemplo del codigo
<script> var res = localStorage.getItem('img'); if(res == null){ const myList = ['🐒', '🐕', '🐈', '🐅', '🐎', '🦓', '🐄', '🦒', '🐘', '🦔', '🦉', '🐊', '🦖', '🐬', '🦈', '🦋', '🐞', '🦂']; res = myList[Math.floor(Math.random() * myList.length)]; localStorage.setItem('img', res); } console.log(res); document.querySelectorAll('.emoji').forEach(span => span.textContent = res) </script>Luego me enteré de la huella digital JS y me alegró mucho, ya que la identificación del usuario no se elimina incluso si se ha eliminado el historial.
Sin embargo, parece que no entiendo cómo hacer exactamente la misma generación de emoji con la huella digital JS
<script> // Initialize the agent at application startup. const fpPromise = import('https://openfpcdn.io/fingerprintjs/v3') .then(FingerprintJS => FingerprintJS.load()) // Get the visitor identifier when you need it. fpPromise .then(fp => fp.get()) .then(result => { // This is the visitor identifier: const visitorId = result.visitorId console.log(visitorId) alert(visitorId) }) </script>Entiendo que tengo que agregar una const, sin embargo, todo el tiempo que traté de implementar el código para la generación aleatoria de emojis para la huella digital js, todo falló
¿Podría darme algún consejo o un ejemplo del código/idea de trabajo similar?
De modo que al final los valores almacenados serían como:
identificación : 12312312313123
Emoji: 🐒
¡Gracias por adelantado!
Obtenga el número de hash (utilicé esta implementación de CRC ), la longitud del módulo de su lista de emoji y simplemente elija el emoji dado.
<script> // Initialize the agent at application startup. const fpPromise = import('https://openfpcdn.io/fingerprintjs/v3') .then(FingerprintJS => FingerprintJS.load()) const crc32=function(r){for(var a,o=[],c=0;c<256;c++){a=c;for(var f=0;f<8;f++)a=1&a?3988292384^a>>>1:a>>>1;o[c]=a}for(var n=-1,t=0;t<r.length;t++)n=n>>>8^o[255&(n^r.charCodeAt(t))];return(-1^n)>>>0}; // Get the visitor identifier when you need it. fpPromise .then(fp => fp.get()) .then(result => { // This is the visitor identifier: const visitorId = result.visitorId const myList = ['🐒', '🐕', '🐈', '🐅', '🐎', '🦓', '🐄', '🦒', '🐘', '🦔', '🦉', '🐊', '🦖', '🐬', '🦈', '🦋', '🐞', '🦂']; const listLength = myList.length const visitorIdNumber = crc32(visitorId); const selectedEmoji = myList[visitorIdNumber % listLength]; localStorage.setItem('img', selectedEmoji); }) </script>