質問 |
||
| 質問者:cheese0084 | glayer.jsを1度だけ表示させる | |
|---|---|---|
困り度:
|
とあるサイト制作しておりまして、トップページにglayer.jsを 使用して、警告を出しています。 ただ、リロードしたり、他のページから戻ってきた時も またglayer.jsによる警告が出てしまいます。 これでは問題があるので、Cookieの設定等でブラウザを閉じるまで は1度しかglayer.jsを読み込まないという方法はありますでしょうか? http://q.hatena.ne.jp/1178600357 ↑こちらを見てみたのですが良く分からなかったものでして。。。 どなたか分かる方お願い致します。 以上、宜しくお願い致します。 |
|
質問投稿日時:08/07/04 21:59 質問番号:4151615 |
||
回答 |
|
| 回答者:auty | ・ 問題点の1つは、この方法がCookieの設定を有効にしているかどうかに依存しているということです。 ・ まず第1に確認することは、IE6、Mac Safariの現在の設定状況です。 ・ Cookieの設定が有効でもIE6、Mac Safari等のブラウザの動作が異なるということが分かった場合は、現在当方では確認できませんので、ANo.1とANo.3で、簡単なサンプルを作って、御自分で動作状況を確認した上で、再度ご質問を提出されるとよいでしょう。 |
|---|---|
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| |
回答日時:08/07/07 22:59 回答番号:No.4 |
|
| この回答へのお礼 | >・ 問題点の1つは、この方法がCookieの設定を有効にしているかどうかに依存しているということです。 了解しました。 >・ まず第1に確認することは、IE6、Mac Safariの現在の設定状況です。 http://www.personal-media.co.jp/webshop/enable_cookie.html ↑上記ページを参考にIE6、Mac SafariともにCookieの設定を有効にし、サンプルを作り確認してみましたが、やはり何度も出てくるという状況でした。 |
回答 |
|
| 回答者:auty | >>> 上記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();"> としてみてください。 |
|---|---|
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| |
回答日時:08/07/07 19:55 回答番号:No.3 |
|
| この回答へのお礼 | 毎回早いご回答、誠にありがとうございます。 非常に助かっております。 上記ソースコードを「glayer.js」内に挿入し、 <body onLoad="init();"> としたところ正常に動作しました。 が、IE7、Firefoxでは正常に動作しておるのですが、 IE6、Mac Safariでは、やはりリロードしたり、他ページからの 戻りで、再度表示されてしまいます。 この点についてはあきらめるしかないのでしょうか。。 |
回答 |
|
| 回答者:auty | ・ 「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(""); } と置きかえてみてくだい。 |
|---|---|
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| |
回答日時:08/07/07 16:25 回答番号:No.2 |
|
| この回答への補足 | 度々申し訳ございません。 呼び出している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();」の部分を置き換えてみたのですが、 何の反応もなくなってしまいました。 他に置き換える部分があるのでしょうか? |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答良回答20pt |
|
| 回答者:auty | ・ まず、以下のコードの動きを確かめてください。 ------------------------------------------------------------ <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文を「警告の部分」で置き換えるような形にしてみてください。 |
|---|---|
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| |
回答日時:08/07/04 23:22 回答番号:No.1 |
|
| この回答への補足 | ご回答いただき、誠に有難うございます。 上記コードの動きはOKでした。 ただ、 >・ もしよければ、glayer.jsの中で「警告の部分」をみつけます。 >・ 次に、上のJavaScriptソースコードのみを glayer.jsに挿入しますが、 >そのalert文を「警告の部分」で置き換えるような形にしてみてください。 の部分がよくわからないのですが、いま一度ご説明いただけますでしょうか? glayer.jsは以下にございます。 http://www.hddx.net/glayer.js 以上、お手数ですが宜しくお願い致します。 |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |