2012-05-27 5 views
0

Это модальное окно с выбором языка, если пользователь выбрал опцию1, модальные шкуры и файл cookie, поэтому пользователь не увидит модальный снова. Если выбрана опция 2, перенаправляется страница и файл cookie, поэтому страница будет перенаправлять пользователя в соответствии с файлом cookie каждый раз.User select cookie set/check with jQuery

Текущий код перенаправляет пользователя, даже если установлен параметр 1 cookie, я не знаю, как проверить файлы cookie отдельно.

EDIT: Рабочий код с помощью как @ Милоша и @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

btw, если '$ .cookie (" en ")' не существует, весь ваш код никогда не будет продолжать, потому что вы нарушаете его, так как переменная 'undefined', вы должны, во-первых, проверить, существует ли файл cookie как я указал на мой [ответ] (http://stackoverflow.com/a/10774417/28004) – balexandre

ответ

1

Я бы сказал, что вы делаете это неправильно с самого начала. Вы пытаетесь сохранить информацию о выборе пользователем языка, и это может быть только один язык, не так ли? Зачем хранить два разных файла cookie с содержимым «true»? Например, вы можете сохранить один файл cookie, называемый «lang», и установить его содержимое в «en» или «es» или на любой язык, который пользователь выбирает. Тогда вы бы:

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

Если Вы абсолютно должны сделать это с различными печеньем, например, потому что вы расширяете существующие CMS или рамки или любой другой, вы должны разговляйся если друг от друга примерно так:

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

Спасибо, мне не нужны два разных куки-файла, я просто подумал, что с ними будет проще работать. Я потерялся между ifs ... Как реализовать второй фрагмент? Я действительно не понимаю ... – elbatron

+0

Хорошо, я вижу, вы отредактировали свой первый фрагмент. Я использовал его, и он работает! – elbatron