2011-06-17 14 views
0

classNameの変更を記憶するようにクッキーを設定していますが、クッキーを設定すると、すべてのディレクトリパスが読み込まれますが、クッキーがmydomain/sub /そのディレクトリパス。ディレクトリのクッキーを設定する

提案がありますか?

HTML:

<html> 
    <head> 
    <script type="text/javascript" src="theme.js" /></script> 
    </head> 
    <body id="site-index" class="defaultTheme"> 
    <a href="#" id="themeone">Theme one</a> 
    <a href="#" id="themetwo">Theme Two</a> 
    </body> 
</html> 

私のコード(theme.js):あなたは、具体的パスを設定することができます

var stateTheme; 

window.onload=function() { 

objTheme=document.getElementsByTagName('body')[0]; 
stateTheme=(stateTheme==null)?' defaultTheme':stateTheme; 
objTheme.className+=stateTheme; 

//THEME 
document.getElementById('themeone').onclick=function() { 
objTheme.className='defaultTheme'; 
stateTheme=objTheme.className; 
setCookie("StateTheme",stateTheme,expiryDate); 
return false; 
} 
document.getElementById('themetwo').onclick=function() { 
objTheme.className=(objTheme.className=='defaultTheme')?' silverTheme':' silverTheme'; 
stateTheme=objTheme.className; 
setCookie("StateTheme",stateTheme,expiryDate); 
return false; 
} 
} 

//COOKIES 
function setCookie() { 
exp=new Date(); 
plusMonth=exp.getTime()+(31*24*60*60*1000); 
exp.setTime(plusMonth); 
document.cookie='StateTheme='+stateTheme+';expires='+exp.toGMTString(); 
} 

function readCookie() { 
    stateTheme = getCookie("StateTheme");  
} 

// Cookie 
var daysToKeep = 500; // default cookie life... 
theCookie = ''; 
today  = new Date(); 
expiryDate = new Date(today.getTime() + (daysToKeep * 86400000)); 

function setCookie (name,value,expires,path,theDomain,secure) { 
    value = escape(value); 
    var theCookie = name + "=" + value + 
    ((expires) ? "; expires=" + expires.toGMTString() : "") + 
    ((path)  ? "; path=" + path : "/") + 
    ((theDomain) ? "; domain=" + theDomain : "127.0.0.1") +  
    ((secure)  ? "; secure"   : ""); 
    document.cookie = theCookie; 
} 

function getCookie(Name) { 
    var search = Name + "=" 
    if (document.cookie.length > 0) { // if there are any cookies 
     offset = document.cookie.indexOf(search) 
     if (offset != -1) { // if cookie exists 
     offset += search.length 
     // set index of beginning of value 
     end = document.cookie.indexOf(";", offset) 
     // set index of end of cookie value 
     if (end == -1) end = document.cookie.length 
     return unescape(document.cookie.substring(offset, end)) 
     } 
    } 
} 

readCookie(); 

答えて

0

2つのsetCookie関数があります。私は自分のコードに、他ますsetcookie関数を追加していない

//この最初の1

を削除COOKIES

function setCookie() { 
exp=new Date(); 
plusMonth=exp.getTime()+(31*24*60*60*1000); 
exp.setTime(plusMonth); 
document.cookie='StateTheme='+stateTheme+';expires='+exp.toGMTString(); 
} 

setCookie("StateTheme",stateTheme,expiryDate,"/");

を使用する - しかし、クッキーのコードあなたが投稿したものは間違いなく私がまとめたものです。

+0

いいえ私はどこかでそれを見つけたのだろうか?私は間違いなくあなたの作品の認知度をコードにコメントしています。ご協力いただきありがとうございます! – PaulW

+0

それを気にしないでください。感謝する人はBill Dortchです。そのコードを見るのは面白かったです。私の答えが助けられたら、[回答を受け入れてください](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – mplungjan

0

に "/" あなたは関係なく、どのように深いでの、クッキーを設定するときあなたが設定したディレクトリ構造。

https://developer.mozilla.org/En/Document.cookie

だからあなたは、setcookie関数の中で、ちょうどこの微調整:

document.cookieを= 'StateTheme =' + stateTheme + ';有効期限が切れる=' + exp.toGMTString()+」、パス=/';

...柔軟性が必要な場合は、渡すことのできる関数にパス引数を追加します。

関連する問題