1

我想创建一个带有“记住我”复选框的 2 按钮脚本,该复选框将 cookie 放在用户的浏览器上。
下次他进入该站点时,他将被自动重定向到他第一次选择的链接。
我一直在寻找这样的东西

<div id="container">
    <p>Please Choose Your Preference</p>
    <br/>
    <div class="normal_site"><a href="">Regular Site</a></div>
    <div class="mobile_site"><a href="">Mobile Site</a></div>
</div>
4

2 回答 2

1

你可以试试这个(需要jQuery)。http://jsfiddle.net/infernalmaster/c6cmk/8/

<script src="http://code.jquery.com/jquery-latest.js"></script>
<div id="conteiner">
    <p>Please Choose Your Preference</p>
    <br>
    <div class="normal_site "><a class="sitelink" href="http://www.regular.com/">Regular Site</a></div>
    <div class="mobile_site"><a class="sitelink" href="http://www.mobile.de/">Mobile Site</a></div>
    <div class="remember"><input id="remember_me" type="checkbox" checked=""> Remember My Selection<div>
</div>

<script type="text/javascript">
function validate(){
    $(document).on('click', '.sitelink', function(){ // if user click on link
       var site_pref = $(this).attr('href');         
       if($('#remember_me').is(':checked')){        //if checkbox is checked then 
                                                    //  write link url t cookie
          createCookie('site_pref', site_pref, 30);  // for 30 days
       } else {
          eraseCookie('site_pref');                
       }
       return true;
    });


    var site_pref = readCookie('site_pref');  //read cookie
    if(site_pref){                             //if cookie present then
        self.location=(site_pref);      //redirect to path form cookie
    }    
}

validate();

// Taken verbatim from http://www.quirksmode.org/js/cookies.html

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);
}
</script>
于 2013-06-01T00:14:29.653 回答
0

你可以在这里看到完整的例子:http: //jsfiddle.net/c6cmk/

代码中最重要的部分是:

$('.normal_site').on('click', function() {
    createCookie('site_pref', 'normal', 1);
});
$('.mobile_site').on('click', function() {
    createCookie('site_pref', 'mobile', 1);
});
var pref = readCookie('site_pref');
if (pref) {
    alert(pref);
} else {
    alert('please choose a website!');
}

最初,如果用户没有选择任何东西,它会提示他选择一个链接。在他点击其中任何一个之后,如果他重新访问该页面(尝试重新加载),他将收到关于他之前选择的警报。注意:cookie 仅存储 1 天,您可能需要增加它。

我正在使用 jQuery 和一些取自quirksmode的 cookie 函数。

于 2013-05-31T23:55:00.763 回答