• 締切済み

アクセス時からのカウントダウンタイマー設置について質問です。

アクセス時からのカウントダウンタイマー設置について質問です。 サイトに設置するカウントダウンタイマーで 例えば、期限を2日間と設定し、 初回の訪問時からカウントできますか? 同じ人が2回目にサイトを訪問した場合は 初回からカウントされた時間の続きになります。 ですから、訪問者1人1人 訪問時間が違うわけですから、 それぞれ期限が異なることになります。 このような設定のスクリプトは可能でしょうか?

みんなの回答

回答No.13

No.4,6,8,12です > しらべときます。 といっておきながら、しらべるまえに、「とある(うちゅうじんのような?)かた」に おしえていただきました。いか。そのいんようです。 ・encodeURI(s) は、s を「URI として機能するよう」エスケープする。 ・encodeURIComponent(s) は、s を「URIComponent として埋め込めるよう」エスケープする(それ自体が URI として機能するとは限らず、元の形に戻す責任はアプリ側が負う)。 Cookie のドメイン指定は(相対)URI として機能させねばならないので、ここで encodeURIComponent() を使ってはいけません。 ということです。(のどぼとけを、れんだで、ちょっぷしながらいうと、それっぽいです) それと、「とある(こっちはふっつうのちきゅうじんの)かた」からも、 してきがありました。  function addDay ( day, date ) {   if( 'number' !== typeof day ) day = 0;   if( 'object' !== typeof date ) date = new Date;   return (date.setDate( date.getDate() + day ), date);  } は、  function addDay ( day, date ) {   if( 'number' !== typeof day ) day = 0;   if( 'object' !== typeof date ) date = new Date;   date.setDate( date.getDate() + day );   return date;  } にです。やってることは、おなじなのですが、まぎらわしくかいてどうする? ということで。ていせいしてください。ごめんなさい。

回答No.12

なぁ~にぃ~やっちまったなぁ~! targetDay = addDay(2).getTime(); を targetDay = addDay( LIMIT_DAY ).getTime(); に。 encodeURIComponent() ? ごめん、しらべときます。 (よってたかって・・・。)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.11

ぼそっと。     (part2?)  LIMIT_DAY = 2; って使ってないけど…

  • think49
  • ベストアンサー率59% (285/482)
回答No.10

興味深かったので、URIエンコード関数を一通り調べてみました。 encodeURIComponent - MDC https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Functions/encodeURIComponent decodeURIComponent - MDC https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Functions/decodeURIComponent encodeURI - MDC https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Functions/encodeURI decodeURI - MDC https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Functions/decodeURI javascript: escape(), encodeURI(), encodeURIComponent() 比較 (groundwalker.com) http://groundwalker.com/blog/2007/02/javascript_escape_encodeuri_encodeuricomponent_.html You Look Too Cool ? JavaScriptのescapeとencodeURIとencodeURIComponentの違い http://stabucky.com/wp/archives/554 encodeURIComponent() は知っていたけど、encodeURI() は知らなかったなあ。 ------- var uri = 'http://example.com/search?foo=テスト& foo=&hoge=*!"(),/.&end'; alert (encodeURI(uri)); // http://example.com/search?foo=%E3%83%86%E3%82%B9%E3%83%88&%20foo=&hoge=*!%22(),/.&end alert (encodeURIComponent(uri)); // http%3A%2F%2Fexample.com%2Fsearch%3Ffoo%3D%E3%83%86%E3%82%B9%E3%83%88%26%20foo%3D%26hoge%3D*!%22()%2C%2F.%26end ------- ・encodeURIComponent() はGETパラメータなどにURIを埋め込むときのために完全にURIエンコードする。 ・encodeURI() はURIとしてはほぼ正しいのだけど、URIエンコードの取りこぼしがある場合において安全な文字にエスケープする。 encodeURI() は「引数にとる値がURIとして正しい文字列である必要がある」ので、使いどころが難しいですね。 万全を期すならば、URIをパースする必要があるのではないかと思います。 例えば、#8 で babu_babooさん は encodeURI (domain) を使われていますが、「domain が正しいURIであること、をどこで保証するのか」って問題が出てきそうです。 私ならそういうのを考えるのが面倒なので、encodeURIComponent() で強制的にエンコードする方法をとるかもしれない…。

回答No.9

 //その2_________________________    var COOKIE_NAME = 'myCount';  var LIMIT_DAY = 2;  var SHELF_LIFE = 10;  var TIMEOUT_MESS = 'おとといきやがれぇ~!';  var node = doc.getElementById( 'mess' );  var targetDay = parseInt( getCookie( COOKIE_NAME ) );  if( !targetDay ) {   targetDay = addDay(2).getTime();   setCookie( COOKIE_NAME, targetDay + '', SHELF_LIFE );  }  (function () {   var text = '花火点火まであと、';   var s = (targetDay - (new Date).getTime()) / 1000 |0;   if (s < 0)    text = TIMEOUT_MESS;   else {    text += padding( s / 86400 |0) + '日と' +     padding( s % 86400 / 3600 |0) + '時間' +     padding( s % 3600 / 60 |0) + '分' +     padding( s % 60 |0) + '秒です';    setTimeout (arguments.callee, 1000);   }   node.firstChild.nodeValue = text;  })(); })(this.document); //--> </script>

回答No.8

かいてみた。やっぱりむだにながいので、ぶんかつです。 ぜんかくくうはくは、はんかくにでもして。 2にちたってみないと、むしとりできませ~ん!? <!DOCTYPE html> <title></title> <style type="text/css"> body { background : black; color: red; } p { font-size:200%; } p.cm { font-size: 400%; color: green; } p.cm2 { font-size: 100%; color: yellow; } <style type="text/css"> </style> <body> <p id="mess">有効期限は、初めてページを閲覧してから2日です</p> <p class="cm">花火大会開催中!!</p> <p class="cm2">(出場者募集中、商品はなんと「黒豆10粒」)</p> <script type="text/javascript"><!-- (function (doc) {  function addDay ( day, date ) {   if( 'number' !== typeof day ) day = 0;   if( 'object' !== typeof date ) date = new Date;   return (date.setDate( date.getDate() + day ), date);  }  function getCookie ( name ) {   name = encodeURIComponent( name ).replace( /([.*()]) /g, '\\$1' );   var value = doc.cookie.match( RegExp( name + '\\s*=\\s*(.*?)(?:[\\s;,]|$)' ) );   return value ? decodeURIComponent( value[1] ): '';  }  function setCookie ( name, value, day, path, domain ) {   return doc.cookie = encodeURIComponent (name) + '=' + encodeURIComponent (value) +    '; ' + 'expires=' + ( addDay(day) ).toUTCString () + '; ' + (path ? 'path=' + encodeURI (path) + '; ': '') +    (domain ? 'domain=' + encodeURI (domain) + '; ': '');  }  function padding ( n ) { return n < 10 ? '0' + n: n; }

  • zeff
  • ベストアンサー率69% (137/198)
回答No.7

>babu_babooさんへ いやいや、ぜんぜんそんなことはないですよ^^ 大した引き出しもないのに出しゃばって失敗したなぁと思って; まだまだわからないことが多いので、 慎重に回答しないとならないなぁと反省しておるところです。 それに誤りや間違いを指摘されるのは自分も勉強になるし、 悪い気どころか逆に「ありがとう」という気持ちです。 ですので、ほんとにお気になさらずに^^

回答No.6

zeff さんへ きをわるくしないでね。 ほかで、taloo さんがおっしゃっられていましたが、 >他の回答者からのツッコミがないというのが最大の欠点 まったく、そのとおりだとおもいます ほかのかたがたのように、てきかくな「資料」をていじしませんが 「ぼそっと」は、つづくかな? わたしに、がっつんとつっこむと、へこみ(&むつける(方言))ますが、ぬる~ぃのならOK!

  • zeff
  • ベストアンサー率69% (137/198)
回答No.5

今回のご質問の解決点は「Cookieを使うんだ」という点だと思います。 スクリプトはとりあえず動いたのでオマケで載せただけです。 その中にキーワードが含まれてそうだったので。 escapeやunescapeが何の働きをしてるかわかっていませんし; 非推奨?なのも知らないぐらいで^^; だから自分が偉そうに言うことでは無いんですけど、 正しく動くスクリプトが欲しいならそれを待つも良し、 がんばって自分で作ってみたけど動かない等の場合に再質問、 というのが適切では無いでしょうか。

回答No.4

ぼそっと。 escape および unescape かんすうは https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Deprecated_Features

sh05
質問者

お礼

ご回答いただきましてありがとうございます。 こちらのURLですが、 勉強不足でして^^; すみません。