2

我创建了一个弹出对话框,提示用户访问我们的 Facebook、Twitter 或单击“不再向我显示此内容”

我只是在短时间内实现它,因为它不会变得太烦人,但我不希望它在每次刷新页面时弹出。

我已经用 JavaScript 查看了 cookie,但我似乎无法让它与我的代码一起使用。

我的 JS 代码如下所示:

    function popUp(div){
document.getElementById(div).style.display='block';
return false;
}
function hide(div){
document.getElementById(div).style.display='none';
return false;
}

我的 HTML 看起来像这样:

<body onLoad="return popUp('pop')">

    <div id="pop" class="disableBackground">
        <div id="popup">
        <h1 title="Social">You can also find us here</h1>
        <div class="arrow-down"></div>
        <br />
        <a class="btn-connect-option facebook badge-facebook-connect" href="http://facebook.com" target="_blank">Facebook</a>
        <a class="btn-connect-option twitter" href="http://twitter.com/" target="_blank">Twitter</a>
        <div class="clear"></div>
        <p onClick="return hide('pop')" style="cursor: pointer">Don't show me this again</p>
        </div>
        </div>

我不希望您编写我的需求,我真的很感激有关如何实现这一点的一些指导。

非常感谢!

4

2 回答 2

0

如果我们在包含的标记中搜索答案并且有足够的结果来构建我们的函数:getcookiesetcookie

在此处输入图像描述

<html>
<head>
<script>
    var our_cookie_name = 'popupdiv';
    function popUp( div ) {
        if( getCookie( our_cookie_name ) != div )
            document.getElementById(div).style.display='block';
        return false;
    }
    function hide( div ) {
        setCookie( our_cookie_name, div );
        document.getElementById(div).style.display='none';
        return false;
    }
    function setCookie( name, value, days ) {
        var expires = "";
        if ( days ) {
            var date = new Date(); 
            date.setTime( date.getTime() + (days*24*60*60*1000) );
            var expires = "; expires=" + date.toGMTString();
        }
        document.cookie = name + "="+value+expires+"; path=/";
    } 
    function getCookie( 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 ) {
        setCookie( name, "", -1 );
    }
</script>
</head>
<body onLoad="popUp('popup-container')">
<small><a href="javascript:eraseCookie(our_cookie_name)">Clear cookie</a></small>
<hr />
<div id="popup-container" class="disableBackground" style="display:none">
    <div id="popup">
        <h1 title="Social">You can also find us here</h1>
        <div class="arrow-down"></div>
        <br />
        <a class="btn-connect-option facebook badge-facebook-connect" href="http://facebook.com" target="_blank">Facebook</a>
        <a class="btn-connect-option twitter" href="http://twitter.com/" target="_blank">Twitter</a>
        <div class="clear"></div>
        <p onClick="return hide('popup-container')" style="cursor: pointer">Don't show me this again</p>
    </div>
</div>
</body>
</html>
于 2013-10-11T20:23:09.623 回答
-1

使用这两个函数,您可以设置一个新的 cookie,并获取设置的 cookie 的值(或检查是否设置了 cookie)。在显示 div 之前,在 hide() 函数中设置您想要的 cookie,并在 pop 函数中检查它。您可以在此处找到这些函数及其解释:http: //www.w3schools.com/js/js_cookies.asp

function setCookie(c_name,value,exdays)
{
 var exdate=new Date();
 exdate.setDate(exdate.getDate() + exdays);
 var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
 document.cookie=c_name + "=" + c_value;
}

function getCookie(c_name)
{
 var c_value = document.cookie;
 var c_start = c_value.indexOf(" " + c_name + "=");
 if (c_start == -1)
 {
   c_start = c_value.indexOf(c_name + "=");
 }
 if (c_start == -1)
 {
  c_value = null;
 }
 else
 {
   c_start = c_value.indexOf("=", c_start) + 1;
   var c_end = c_value.indexOf(";", c_start);
   if (c_end == -1)
 {
   c_end = c_value.length;
 }
   c_value = unescape(c_value.substring(c_start,c_end));
 }
 return c_value;
}
于 2013-10-07T00:30:30.403 回答