【问题标题】:if cookies are disabled, unhide a div showing error如果 cookie 被禁用,则取消隐藏显示错误的 div
【发布时间】:2013-06-12 09:52:55
【问题描述】:

对不起,我是 JavaScript 的新手。如果 are_cookies_enabled() 函数返回 false,我想要一个当前具有 display:none 的 div 来取消隐藏 onload。但是,我的 div 并不是这样说的。如果我将它封装在 jquery onload 中,它本身就可以工作。我做错了什么?

注意 noCookies 中的函数设置为 true(这只是为了查看取消隐藏功能是否有效,因为我启用了 cookie)。

    function are_cookies_enabled()
    {
        var cookieEnabled = (navigator.cookieEnabled) ? true : false;

        if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled)
        { 
            document.cookie="testcookie";
            cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false;
        }
        return (cookieEnabled);
    }
    function noCookies()
    {
        if (are_cookies_enabled() == true) {
            document.getElementById('nocookie').style.display='block';
        }
    }
    window.onload = noCookies();

DIV:

<div id="nocookie" style="display:none;"><div class="ec-messages messages-warning">This site may not function properly if cookies are disabled. Session variables are stored in cookies. Please enable cookies.</div></div>

【问题讨论】:

  • 也许这段代码在 DOM 构建之前运行?
  • 啊是的。这是有道理的。我应该在最后执行它吗?有什么建议么?或者只是将 nocookies() 封装在 jquery onload 中
  • 我对制作这项工作很感兴趣。我相信我的网站访问量很差,我觉得这将帮助我阻止那些不良访问者。其他人有一些他们认为可行的替代脚本吗?

标签: javascript cookies


【解决方案1】:

尝试将window.onload = noCookies() 更改为window.onload = noCookies

window.onload 是处理“加载”事件 [ref] 的事件处理程序,因此如果您将 noCookies 函数分配给 window.onload,则该函数将在“加载”事件触发时被调用。

但是,在您的代码中,函数的返回值(未定义)被分配给window.onload,毫无疑问它不会起作用。

【讨论】:

  • @Alex 我已经更新了我的答案,希望它对你更有帮助。
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多