如果有cookie,我的javascript弹出窗口会暂时显示

时间:2013-02-15 21:27:16

标签: javascript cookies popup

我不知道我做错了什么。它的工作原理只是瞬间显示弹出窗口。超时选项会更好吗?哪个部分是问题?我对Javascript有点新意,所以我真的不知道该找到什么。

<script language="javascript" type="text/javascript">
/** Create a html cookie and set expiry as a day. **/
function createCookie(name,value,days) {
   var date = new Date();
   date.setTime(date.getTime()+(days*24*60*60*1000));
   var expires = date.toGMTString();
   document.cookie = name+"="+value+"; expires="+expires+"; path=/";
}
/** Check if already a cookie has been created. **/
function readCookie(name) {
    var flag = 0;
    var dcmntCookie = document.cookie.split(';');
    for(var i=0;i < dcmntCookie.length;i++) {
        var ck = dcmntCookie[i];
        while (ck.charAt(0)==' ') {
            ck = ck.substring(1,ck.length);
        }
        if(ck) {
            cparts = ck.split('=');
            if (cparts[0] == name) flag=1;
        }              
    }     
    if(flag) { 
        return true; 
    } else {
        return false; 
    }  
}
/** Check if cookie exists else create a new one. **/
function checkCookie(name) {
    if (readCookie(name)) {
        document.getElementById('google').style.display = "none";
        document.getElementById('google').style.visibility = "hidden";
    }
    else createCookie(name,"cookie 4 the day",1); 
}
</script>
<script type="text/javascript">

function closeThisDiv()

{

var openDiv = document.getElementById('google');

openDiv.style.display = 'none';

}
</script>
<body onLoad="checkCookie('MyCookie')"

2 个答案:

答案 0 :(得分:0)

如果您的目标是从页面显示的最开始隐藏带有id="google"的元素(因此它永远不会显示),那么您应该添加一个在头部加载的CSS规则,如下所示:

#google {display: none;}

或者,您应该为HTML本身添加一个样式元素:

<div id="google" style="display:none"></div>

由于您的代码目前已编写,因此听起来它正在按照预期执行。它等待加载整个文档(包括图像),然后用id="google"隐藏元素。这意味着该项目将在页面加载时短暂显示,然后您的代码将隐藏它。

如果您无法修改Google对象的CSS或HTML,并且您只是尝试使用javascript尽快隐藏它,并且您的网页的HTML中存在Google对象(不是以编程方式添加) ,那么你可以这样做:

<body>
other HTML here

<script>
// script that executes right before the /body tag
checkCookie("MyCookie")
</script>

</body>

这至少不会在隐藏之前等待所有图像加载。

答案 1 :(得分:0)

我这样修好了:

创建display:none的css属性;对于#google

#google{display:none;}

然后切换代码的​​最后一部分,只有在他们没有cookie时才显示,并创建cookie。

/** Check if cookie exists else create a new one. **/
function checkCookie(name) {
    if (readCookie(name)) {

    }
    else document.getElementById('google').style.display = "inline";
         document.getElementById('google').style.visibility = "visibility";
         createCookie(name,"cookie 4 the day",1);

如果有人遇到这个问题。为我工作很棒。