- ベストアンサー
glayer.jsを1度だけ表示させる
とあるサイト制作しておりまして、トップページにglayer.jsを 使用して、警告を出しています。 ただ、リロードしたり、他のページから戻ってきた時も またglayer.jsによる警告が出てしまいます。 これでは問題があるので、Cookieの設定等でブラウザを閉じるまで は1度しかglayer.jsを読み込まないという方法はありますでしょうか? http://q.hatena.ne.jp/1178600357 ↑こちらを見てみたのですが良く分からなかったものでして。。。 どなたか分かる方お願い致します。 以上、宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
・ まず、以下のコードの動きを確かめてください。 ------------------------------------------------------------ <html> <title>Cookie</title> <script type="text/javascript"> <!-- var rireki = getCookie('rireki2'); if(rireki=="") { alert("この文を警告スクリプトで置き換えてください。(初回のみ表示)"); document.cookie="rireki2=HELLO"; } function getCookie(key){ tmp=document.cookie+";"; tmp1=tmp.indexOf(key,0); if(tmp1 !=-1){ tmp=tmp.substring(tmp1,tmp.length); start=tmp.indexOf("=",0) + 1; end = tmp.indexOf(";",start); return(tmp.substring(start,end)); } return(""); } //--> </script> <body bgcolor="#fff8dc"> <h3>訪問者のrirekiを記憶する</h3> <hr /> </body> </html> ------------------------------------------------------------ ・ もしよければ、glayer.jsの中で「警告の部分」をみつけます。 ・ 次に、上のJavaScriptソースコードのみを glayer.jsに挿入しますが、 そのalert文を「警告の部分」で置き換えるような形にしてみてください。
その他の回答 (3)
- auty
- ベストアンサー率58% (284/486)
・ 問題点の1つは、この方法がCookieの設定を有効にしているかどうかに依存しているということです。 ・ まず第1に確認することは、IE6、Mac Safariの現在の設定状況です。 ・ Cookieの設定が有効でもIE6、Mac Safari等のブラウザの動作が異なるということが分かった場合は、現在当方では確認できませんので、ANo.1とANo.3で、簡単なサンプルを作って、御自分で動作状況を確認した上で、再度ご質問を提出されるとよいでしょう。
お礼
>・ 問題点の1つは、この方法がCookieの設定を有効にしているかどうかに依存しているということです。 了解しました。 >・ まず第1に確認することは、IE6、Mac Safariの現在の設定状況です。 http://www.personal-media.co.jp/webshop/enable_cookie.html ↑上記ページを参考にIE6、Mac SafariともにCookieの設定を有効にし、サンプルを作り確認してみましたが、やはり何度も出てくるという状況でした。
- auty
- ベストアンサー率58% (284/486)
>>> 上記bodyタグの「over18();」の部分を置き換えてみた どのように置き換えたかが問題ですが、1例として </head> <body onLoad="over18();"> の部分を function init() { var rireki = getCookie('rireki2'); if(rireki=="") { over18(); document.cookie="rireki2=HELLO"; } } function getCookie(key){ tmp=document.cookie+";"; tmp1=tmp.indexOf(key,0); if(tmp1 !=-1){ tmp=tmp.substring(tmp1,tmp.length); start=tmp.indexOf("=",0) + 1; end = tmp.indexOf(";",start); return(tmp.substring(start,end)); } return(""); } </head> <body onLoad="init();"> としてみてください。
お礼
毎回早いご回答、誠にありがとうございます。 非常に助かっております。 上記ソースコードを「glayer.js」内に挿入し、 <body onLoad="init();"> としたところ正常に動作しました。 が、IE7、Firefoxでは正常に動作しておるのですが、 IE6、Mac Safariでは、やはりリロードしたり、他ページからの 戻りで、再度表示されてしまいます。 この点についてはあきらめるしかないのでしょうか。。
- auty
- ベストアンサー率58% (284/486)
・ 「glayer.js」の中での実行部分は Glayer.copyProperties(Glayer.FadeIn.prototype, Glayer.Fade.prototype); Glayer.FadeIn.prototype.from = 0.0; Glayer.FadeIn.prototype.to = 1.0; Glayer.copyProperties(Glayer.FadeOut.prototype, Glayer.Fade.prototype); Glayer.FadeOut.prototype.from = 1.0; Glayer.FadeOut.prototype.to = 0.0; のみのようです。これは、フェードイン、フェードアウトの機能だと考えれれますから 「警告の部分」とは関係ないと思われます。 「警告の部分」がfunction over18()と関係があれば、そのover18()を呼び出しているJavaScriptのソースコードが他にあるはずです。それは、HTMLの中か、他のjsファイルです。 そこから、 over18(); を探して、 var rireki = getCookie('rireki2'); if(rireki=="") { over18(); document.cookie="rireki2=HELLO"; } function getCookie(key){ tmp=document.cookie+";"; tmp1=tmp.indexOf(key,0); if(tmp1 !=-1){ tmp=tmp.substring(tmp1,tmp.length); start=tmp.indexOf("=",0) + 1; end = tmp.indexOf(";",start); return(tmp.substring(start,end)); } return(""); } と置きかえてみてくだい。
補足
度々申し訳ございません。 呼び出しているJavaScriptは「glayer.js」のみでして、HTMLのヘッダは <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <title>●●●</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <link rel="shortcut icon" href="favicon.ico" /> <link rel="stylesheet" type="text/css" href="css/base.css" /> <script type="text/javascript" src="js/glayer.js"></script> </head> <body onLoad="over18();"> となっております。 上記bodyタグの「over18();」の部分を置き換えてみたのですが、 何の反応もなくなってしまいました。 他に置き換える部分があるのでしょうか?
補足
ご回答いただき、誠に有難うございます。 上記コードの動きはOKでした。 ただ、 >・ もしよければ、glayer.jsの中で「警告の部分」をみつけます。 >・ 次に、上のJavaScriptソースコードのみを glayer.jsに挿入しますが、 >そのalert文を「警告の部分」で置き換えるような形にしてみてください。 の部分がよくわからないのですが、いま一度ご説明いただけますでしょうか? glayer.jsは以下にございます。 http://www.hddx.net/glayer.js 以上、お手数ですが宜しくお願い致します。