14. september 2008 - 21:38Der er
5 kommentarer og 1 løsning
How to Skip Confirm "Er du nu helt sikker "
Brugere bliver hurtig trætte af at klikke på confirm("Er du helt sikker ,,,") popups
Jeg har en 100 af disse rundt omkring i scripts og vil gerne tilbyde 'den erfarne' bruger at slå disse popups fra.
Jeg forstiller mig at en der sættes en Session("confirmNejTak") via en toggle function og den sættes ind function ala denne:
function confirmAction(message) { if (confirm(message) == true) { return true; } else { return false; } } Men er der nogen, som har en effektiv løsning man kunne bruge?
Jeg er ikke sikker på om du kan slå den fra globalt (f.eks. ved at sætte en anden handler på window-objektet), men det ville måske også være lige lovligt risikabelt.
Derfor ser jeg ikke umiddelbart andre muligheder, end at du pakker alle dine confirm-dialoger ind som du selv har vist og så alt afhængig af om brugeren ønsker confirm-dialoger, omdefinerer funktionen så den passer til brugerens valg.
Eksempel:
<% if session("confirmNejTak") then %> function confirmAction(message) { return true; }; <% else %> function confirmAction(message) [ return confirm(message); }; <% end if %>
Alle steder hvor confirm er kodet ind i dine scripts, skal du så i stedet kalde confirmAction.
Ups! Der sneg sig lige en knastefejl ind. Rettelse herunder:
<% if session("confirmNejTak")&""="True" then %> function confirmAction(message) { return true; }; <% else %> function confirmAction(message) { return confirm(message); }; <% end if %>
Desuden har jeg lige lavet en lidt mere eksplicit kontrol på indholdet af session-variablen...
function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; }
function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; }
function eraseCookie(name) { createCookie(name,"",-1); }
function confirmAction(message) { if (!readCookie('cookieNoConfirm')) { if (confirm(message) == true) { return true; } else { return false; } } else { return true; } }
Så tjekker den, om du har sat cookien cookieNoConfirm til "true".
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.