2012-05-27 35 views
0

這是一個模式窗口,帶有語言選擇,如果用戶選擇了模式隱藏的選項1,並且存儲了cookie,則用戶將不會再看到該模式。如果選擇了option2,頁面將重定向並存儲一個cookie,這樣頁面就會根據cookie每次重定向用戶。用戶選擇Cookie設置/使用jQuery進行檢查

即使設置了option1 cookie,當前代碼也會重定向用戶,我不知道如何分別檢查cookie。

編輯:兩者的幫助@米洛什和@balexandre工作代碼:

$(document).ready(function(){ 
var myurl = "http://domain.com/"; 
//var currenturl = $(location).attr('href'); 
//console.log(myurl, location.href); 
if (myurl == location.href) { 

    var lang = $.cookie('lang'); 
    if (lang) { 
     if (lang == 'es') { 
      window.location.href = "http://domain.com?lang=es"; 
     } 
    } 
    else { 
var _message_to_show = 'Chosse your preferred language<br/><a href="#" id="modal_close">ENGLISH</a><span id="lang_right"><a href="http://domain.com?lang=es" id="modal_exit">ESPANOL</a></span>'; 

    $.fancybox(
     _message_to_show, 
     { 
     'width'    : 350, 
     'height'   : 300, 
     'transitionIn'  : 'none', 
     'transitionOut'  : 'none', 
     'centerOnScroll' : 'true', 
     'overlayOpacity' : 0.9, 
     'overlayColor'  : '#000', 
     'modal'    : 'true' 
     } 
    ); 

    $('#modal_close').live('click', function(e) { 
    $.cookie("lang", "en", { path: '/', expires: 7 }); 
     e.preventDefault(); 
     $.fancybox.close(); 
    }); 

    $('#modal_exit').live('click', function(e) { 
    $.cookie("lang", "es", { path: '/', expires: 7 }); 
     e.preventDefault(); 
     $.fancybox.close(); 
     window.location.href = "http://domain.com?lang=es"; 
    }); 
} 
} else { 
} 
}); 
+1

順便說一句,如果'。.cookie(「en」)'不存在,所有你的代碼將永遠不會繼續導致你打破它,因爲變量是'undefined',你應該首先檢查cookie是否存在爲I在我的[指南](http://stackoverflow.com/a/10774417/28004) – balexandre

回答

1

我說你做錯了,從一開始。您試圖存儲關於用戶選擇的語言的信息,並且它可能只有一種語言,對嗎?爲什麼要存儲兩個不同的cookies與內容「真」?例如,您可以存儲一個名爲「lang」的cookie,並將其內容設置爲「en」或「es」或用戶選擇的任何語言。然後,你將有:

var lang = $.cookie('lang'); 
if (lang) { 
    if (lang == 'es') { 
     redirect 
    } 
} 
else { 
    display modal 
} 

如果你絕對有,因爲要擴展的,現有的CMS或框架或任何有不同的Cookie做,例如,你應該打破,如果除了你,像這樣:

if (!$.cookie('en')) { 
    if (!$.cookie('es')) { 
     display modal 
    } 
    else { 
     redirect 
    } 
} 
+0

指出謝謝,我不需要兩個不同的cookie,我只是認爲這將是更容易處理。我在ifs之間失去了......我如何實現你的第二個片段?我真的不明白... – elbatron

+0

好的,我看到你編輯了你的第一個片段。我用它,它的工作原理! – elbatron