ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者: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

以上、お手数ですが宜しくお願い致します。
この回答へのお礼この回答にお礼をつける(質問者のみ)
最新から表示回答順に表示良回答のみ表示