2013-10-26 31 views
0

下面的代碼檢查是否存在cookie,如果沒有找到cookie,則設置它們。然後,用戶可以觸發點擊事件以存儲新的cookie。此代碼正用於在我自己的Google翻譯功能中切換語言。保存Cookie值但不能在重新加載後運行

使用下面顯示的location.reload();時,它會正確加載cookie值,但語言不會更改。當我在不使用location.reload()的情況下重新編碼時,語言會改變。我寧願重新加載頁面。

有什麼我在這裏失蹤?

<script> 
    jQuery(document).ready(function($) { 

    //Click event functionality for drop-down and flag language display 
     $("a.nturl").click(function() { 
      $.cookie("language_name", $(this).attr("title"),{ path: "/" }); 
      $.cookie("flag_url", $(this).find("img").attr("src"),{ path: "/" }); 
      location.reload(); 
     }); 

     $("a.flag").click(function() {   
      $.cookie("language_name", $(this).attr("title"),{ path: "/" }); 
      $.cookie("flag_url", $(this).find("img").attr("src"),{ path: "/" }); 
      location.reload(); 
     }); 

    $(function() { 
     var language_name = $.cookie("language_name"); 
     var flag_url = $.cookie("flag_url"); 

       if(typeof(language_name) == "undefined" || typeof language_name == "object") { 
        //alert("hello"); 
        $.cookie("language_name","English"); 
        var language_name = $.cookie("language_name"); 
       } 

       if(typeof(flag_url) == "undefined" || typeof flag_url == "object") { 

        $.cookie("flag_url","<?php echo plugins_url(); ?>/google-language-translator/images/flags24/unitedstates.png"); 
        var flag_url = $.cookie("flag_url"); 
       } 

     $("div.selected").html("<a class=\"notranslate nturl\" onclick=\"return false;\" href=\"#\"><span class=\"flag\"><img class=\"flagimg flagselect\" src=\"" + flag_url + "\" alt=\"" + language_name + "\" height=\"16\" width=\"16\"></span>" + language_name + "</a>"); 

     $.removeCookie("language_name"); 
     $.removeCookie("flag_url"); 

    }); 

     $(function() { 
       var language_name = $.cookie("language_name"); 
       var flag_url = $.cookie("flag_url"); 
       var language_name = $.cookie('language_name'); 
        if (language_name == "English") { 
         $('.en').css('display','none'); 
         $('.selected').click(function() { $('.en').css('display','none'); }); 
        } 

        if (language_name == "Spanish") { 
        //alert(language_name); 
         $('.selected').click(function() { $('.es').css('display','none'); }); 
        } 

       $("div.selected").html("<a class=\"notranslate nturl\" onclick=\"return false;\" href=\"#\"><span class=\"flag\"><img class=\"flagimg flagselect\" src=\"" + flag_url + "\" alt=\"" + language_name + "\" height=\"16\" width=\"16\"></span>" + language_name + "</a>"); 

      });    
    });  

回答

0

你的語言在這條線覆蓋:

$.cookie("language_name", $(this).attr("title"),{ path: "/" }); 

title屬性是空的,因爲這個代碼所示:

$("div.selected").html("<a class=\"notranslate nturl\" onclick=\"return false;\" href=\"#\"><span class=\"flag\"><img class=\"flagimg flagselect\" src=\"" + flag_url + "\" alt=\"" + language_name + "\" height=\"16\" width=\"16\"></span>" + language_name + "</a>"); 

注意<a>title屬性

<a class=\"notranslate nturl\" onclick=\"return false;\" href=\"#\"> 

我認爲,你想要這個:

$.cookie("language_name", $(this).find("img").attr("title"),{ path: "/" }); 

一件事,你應該因爲你動態創建DOM使用委託的事件處理程序。

$(document).on("click","a.nturl",function() { 
      $.cookie("language_name", $(this).find("img").attr("title"),{ path: "/" }); 
      $.cookie("flag_url", $(this).find("img").attr("src"),{ path: "/" }); 
      location.reload(); 
     }); 

     $(document).on("click","a.flag",function() {   
      $.cookie("language_name", $(this).find("img").attr("title"),{ path: "/" }); 
      $.cookie("flag_url", $(this).find("img").attr("src"),{ path: "/" }); 
      location.reload(); 
     }); 
+0

感謝這@Khanh TO,你可以看到任何理由,location.reload不會在這種情況下工作,我糾正了錯誤,它不工作。你的答案中的第一行是什麼意思 - 意思是「重寫?」 –

+0

@Rob Myrick:我的意思是你將「language_name」設置爲一個清空它的空值。 –

+0

謝謝。是的,我糾正了這一點,但仍然無法正常工作。 Cookie實際上保存了值,但不知何故,這不適用於谷歌翻譯 –

0

如果您不需要服務器邏輯來本地化您的數據,那麼您可以設置JavaScript值和Cookie嗎?這post是類似的。

相關問題