2013-06-12 39 views
1

對不起,因爲我是JavaScript的新手。如果are_cookies_enabled()函數返回false,我想要一個div,當前有一個display:none來取消隱藏onload。但是,我的div並非隱藏這樣說。如果我把它裝入jquery,本身就可以工作。我究竟做錯了什麼?如果cookies被禁用,取消隱藏顯示錯誤的div

請注意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> 
+0

也許這個代碼在DOM構建之前運行? – akonsu

+0

啊是的。這是有道理的。我應該在最後執行它嗎?有什麼建議麼?或者只是在jquery onload – Alex

回答

0

嘗試改變window.onload = noCookies()window.onload = noCookies

window.onload是事件處理程序來處理「load」事件[ref],因此,如果您將其分配noCookies功能window.onload,該函數將被調用時,「加載」事件觸發。

但是,在您的代碼中,返回值的函數(未定義)被分配給window.onload,毫無疑問,它不起作用。

+0

中包裝了nocookies(),這就實現了。最奇怪的事情。謝謝;) – Alex

+0

@亞瑟我已經更新了我的答案,希望它對你更有幫助。 –