• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サイト訪問者に対して1度だけ実行したい)

サイト訪問者に対してJavaScriptを1度だけ実行したい方法は?

このQ&Aのポイント
  • サイト訪問者に対して1度だけ実行したいJavaScriptを実行する方法を教えてください。
  • クッキーを利用して初めての訪問者に対してメッセージを表示させるコードを利用しているが、それをJavaScriptの実行に利用できるか知りたい。
  • getCookieとsetCookie関数を使用し、訪問回数のカウントを行なっているが、1度だけ実行したい場合はどうすればいいか知りたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.4

失礼しました。window.onloadをはずせば動くと思います。 <script language="JavaScript"> // キー名 var key = "freekeyword"; // 初期訪問回数 var n = 0; // クッキーを読み込む var cookies = document.cookie.split("; "); for(var i=0;i<cookies.length;i++){ var str = cookies[i].split("="); if(str[0] == key){ // キー名がマッチしたらnに数値を代入 n = str[1]; } } if(n == 0){ // はじめて訪問の場合 document.open(); document.write('<script type="text/javascript" src="welcome.js"></scri' + 'pt>'); document.close(); } n++; // 訪問回数に1足す setCookie(key,n); // クッキーを更新 function setCookie(key,val){ document.cookie = key + "=" + escape(val) + "; "; } </script>

lnp
質問者

お礼

無事に動作致しました、最後まで親切な対応有難うございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.3

【補足】もし、welcome.jsは別に分けたいということであれば、 if文の中身をwelcome.jsに呼び出しに使えばOKです。 if(n == 0){ // はじめて訪問の場合 document.open(); document.write('<script type="text/javascript" src="welcome.js"></scri' + 'pt>'); document.close(); }

lnp
質問者

お礼

詳しい回答ありがとうございます 教えて頂いたコードで思い通りの動作ができたのですがwelcome.jsを外部から呼び出す所でうまく動作しません? if文の中身をwelcome.jsに呼び出しに使うとは以下でいいのでしょうか? // onload function window.onload = function() { if(n == 0){ // はじめて訪問の場合 document.open(); document.write('<script type="text/javascript" src="welcome.js"></scri' + 'pt>'); document.close(); } /* 検証用ここから if(n == 0){ // はじめて訪問の場合 document.open(); document.write('<script type="text/javascript" src="welcome.js"></scri' + 'pt>'); document.close(); } else{ } welcome.jsの書式がおかしいのでしょか? --------------------------------------------------------- <welcome.js> function message(){ document.getElementById('mess').innerHTML = 'Welcome!'; } --------------------------------------------------------- 現状の状態は何も表示されずソースを見ると <script type="text/javascript" src="welcome.js"></script> とだけ表示されます

すると、全ての回答が全文表示されます。
  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.2

javascriptをbodyに書けばほぼそのままでもいけますが、 headという想定でwindow.onloadで動かします。 >1.welcome.jsを呼び出し、<div id="mess"></div>でWelcome!を表示させる。クッキー発行 head内にjavascriptを置いた場合、 bodyのデータを読み込んでからでないとdiv="mess"の存在を確認できないため、 window.onloadで囲う必要があります。 (javascriptをbody内のdiv="mess"の後ろに書けばwindow.onloadで囲う必要はありません) >2.クッキーがなければ(あれば?)なにもしない。 else{alert(~)}の部分を削除するか空にすることで何もしなくなります。 >3.ブラウザが閉じられたときにクッキーを排除。 クッキーに日付を指定していないのでブラウザを閉じるとクッキーが削除されます。 ソースはこちら。 <html> <head> <script language="JavaScript"> // キー名 var key = "freekeyword"; // 初期訪問回数 var n = 0; // クッキーを読み込む var cookies = document.cookie.split("; "); for(var i=0;i<cookies.length;i++){ var str = cookies[i].split("="); if(str[0] == key){ // キー名がマッチしたらnに数値を代入 n = str[1]; } } // onload function window.onload = function() { if(n == 0){ // はじめて訪問の場合 document.getElementById('mess').innerHTML = 'Welcome!'; } /* 検証用ここから if(n == 0){ // はじめて訪問の場合 document.getElementById('mess').innerHTML = 'Welcome!(初回)'; }else{ document.getElementById('mess').innerHTML = 'Welcome!' + (eval(n) + 1) + '回目'; } 検証用ここまで */ n++; // 訪問回数に1足す setCookie(key,n); // クッキーを更新 } function setCookie(key,val){ document.cookie = key + "=" + escape(val) + "; "; } </script> </head> <body> <div id="mess"></div> </body> </html>

すると、全ての回答が全文表示されます。
  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.1

こんな感じでしょうか。 <html> <head> <script language="JavaScript"> // キー名 var key = "freekeyword"; // 初期訪問回数 var n = 0; // クッキーを読み込む var cookies = document.cookie.split("; "); for(var i=0;i<cookies.length;i++){ var str = cookies[i].split("="); if(str[0] == key){ // キー名がマッチしたらnに数値を代入 n = str[1]; } } if(n == 0){ // 訪問回数が0の場合 alert("はじめまして!\nようこそ"); }else{ // 訪問回数が0じゃない場合 alert(n +"回目の訪問ありがとうございます"); } n++; // 訪問回数に1足す setCookie(key,n); // クッキーを更新 function setCookie(key,val){ document.cookie = key + "=" + escape(val) + "; "; } </script> </head> <body> <a href="javascript:void(0);" onclick="setCookie(key,0);">クッキーをクリア</a> </body> </html>

lnp
質問者

お礼

すばやい回答ありがとうございます。 こちらのイメージ的にはアラートで表示させるのではなくサイト訪問者に(ドメイン)対してクッキーがなければ ---------------------------------------------------------------------------- <welcome.js> window.onload = message; function message(){ document.getElementById('mess').innerHTML = 'Welcome!'; } ---------------------------------------------------------------------------- 1.welcome.jsを呼び出し、<div id="mess"></div>でWelcome!を表示させる。クッキー発行 2.クッキーがなければなにもしない。 3.ブラウザが閉じられたときにクッキーを排除。 みたいな動作を考えてます。 こんな事は可能でしょうか?よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A