A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
これまでのかいとうをさんこうにしました。
むだにながいし、あたらしいぶらうざでないとうごかない。<!DOCTYPE html>
<html lang="ja">
<meta charset="utf8">
<body>
<h1>Cominng Soon Test</h1>
<p>
<a>
<span id="hoge">Cominng Soon</span>
</a>
</p>
<script>
function Cookie () {
var doc = this.document || document;
if (! navigator.cookieEnabled)
throw new Error;
function _setCookie (doc, name, value, expires, path, domain, secure) {
if (3 > arguments.length)
throw new Error;
var cookie = [ encodeURIComponent (name) + '=' + encodeURIComponent (value) ];
if (expires) cookie[cookie.length] = 'expires=' + new Date (expires).toUTCString ();
if (path) cookie[cookie.length] = 'path=' + encodeURI (path);
if (domain) cookie[cookie.length] = 'domain=' + encodeURI (domain);
if (secure) cookie.push ('secure');
doc.cookie = cookie.join ('; ');
}
function _getCookie (doc, name) {
if (2 > arguments.length)
throw new Error;
var n = encodeURIComponent (name).replace (/\W/g, '\\$&');
var v = doc.cookie.match (new RegExp (n + '\\s*=\\s*(.*?)(?:[;,\\s]|$)'));
return (v) ? decodeURIComponent (v[1]): '';
}
function SaveCookie (obj, expires, path, domain, secure) {
if (1 > arguments.length)
throw new Error;
for (var prop in obj)
if (obj.hasOwnProperty (prop))
_setCookie (doc, prop, obj[prop] || '', expires, path, domain, secure);
}
function _trim (str) {
return String (str).trim ();
}
function _collect (result, str) {
var nv = str.split ('=', 2);
if (2 == nv.length)
result[decodeURIComponent (_trim (nv[0]))] = decodeURIComponent (_trim(nv[1]));
return result;
}
function LoadCookie (obj) {
if (1 > arguments.length) {
return doc.cookie.split (';').reduce (_collect, new Object);
/*
obj = new Object;
var reg = new RegExp ('(?:^\\s*|\\s+)(.+?)\\s*\\=\\s*(.*?)\\s*(?:;|$)', 'g');
var c = doc.cookie;
var v;
while (v = reg.exec (c))
obj[decodeURIComponent (v[1])] = decodeURIComponent (v[2]);
*/
}
else {
for (var prop in obj)
if (obj.hasOwnProperty (prop))
obj[prop] = _getCookie (doc, prop);
}
return obj;
}
return {
saveCookie: { value: SaveCookie, enumerable: true },
loadCookie: { value: LoadCookie, enumerable: true }
};
}
var Events = {
handleEvent: {
value: function (evt) {
var $ = this;
switch (evt.type) {
case 'load':
var o = $.loadCookie ();
var timeString = o[$.cookieName];
var dt, dt0, dt1;
if (timeString) {
dt0 = +new Date (timeString);
dt1 = +getUTCDateByServer ();
if (dt1 > dt0 + $.keepTime - $.waitTime) {
o[$.cookieName] = null;
$.saveCookie (o);
}
if (dt1 > dt0)
this.success.call (this, evt);
}
else {
dt = +getUTCDateByServer ();
o[$.cookieName] = (new Date (dt + $.waitTime)).toString ();
$.saveCookie (o, new Date (dt + $.keepTime));
}
break;
}
}
},
success: {
value: function (evt) {
var $ = this;
var win = evt.currentTarget;
var t = win.document.querySelector ('#hoge');
t.textContent = $.message;
t.parentNode.href = $.url;
// var o = {}; o[$.cookieName] = null; $.saveCookie (o);//cookie reset
}
}
};
function getUTCDateByServer ( ) {
try {
var req = new XMLHttpRequest;
req.open ('HEAD', '#', false);
req.send (null);
return (new Date (req.getResponseHeader ('Date')));
}
catch (err) { return new Date; }
}
var Param = {
cookieName: {
value: 'minnanihanaishodayo'
},
waitTime: {
// value: +Date.UTC (1970, 0, 3, 0, 0, 0, 000) // 3日(最大30日程度まで)
value: Date.UTC (1970, 0, 1, 0, 0, 5, 000) // 5秒
},
keepTime: {
value: Date.UTC (1970, 0, 1, 0, 0, 10, 000) // 10秒
},
message: {
value: '詳しい説明はこちら'
},
url: {
value: 'http://oshiete.goo.ne.jp/qa/8553893.html'
}
}
function Tools (obj) {
return Array.prototype.reduce.call (arguments, function (r, o) {
return Object.create (r, o) }, new Object);
}
addEventListener ('load', Tools (Cookie (), Events, Param), false);
</script>
No.3
- 回答日時:
サーバーなどを介さずに、クライアント側の JavaScript の範疇だけでやるならば
addEventListener('load',関数,false) にて
クッキー minnanihanaishodayo を読み取る
クッキーが無ければ → 現時刻の文字列を設定して終了
クッキーから時刻を読み取り、現在時刻との差分を日数で計算
日数を元に、画面にリンクを表示 (例:日数が3なら、リンク1-3 を表示)
簡単に見破れないようにBase64化とかシーザー暗号とかで、
クッキー値とかリンク先URLの難読化をする一工夫があれば、
サプライズらしくなるのでお勧めです。
No.2
- 回答日時:
一番問題なのは、ユーザーが故意に、あるいはミスでパソコンの時計がずれているとき。
よって時間はサーバーサイドで取得しなければならない
・PHPやCGIでページを動的に書き出す。
合わせて
<meta http-equiv="refresh" content="秒数;URL=URL">
PHPを使うほうが楽かな
・javascriptはAjax( http://ja.wikipedia.org/wiki/Ajax )などで、サーバーとの改訂時間との更新が必要。
yahoo!オークションの残り時間の表示のような感じになります。
初回アクセスからと言う事は、人によって時間が異なるということなら、cookieが必要になるでしょう。
この回答へのお礼
お礼日時:2014/04/14 13:13
詳しくありがとうございます。
やりたいことは、僕のブログにアクセスしてから24時間後にサプライズとして自作漫画ページへのリンクを表示させ、全7話なので、一日毎にページが増える仕組みにしたいなと思っておりました。
これは難しいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(住宅・住まい) 浴室の24時間換気について 4 2022/06/14 13:56
- PHP PHPのセッション有効期限について 5 2023/06/14 12:40
- 物理学 ここで回答している相対論信者って全員、相対性理論を理解できてないですよね? 4 2023/03/08 12:40
- その他(メールソフト・メールサービス) メールアプリ spark にauメールが入れられない!!! 1 2022/08/19 23:51
- 車検・修理・メンテナンス 車塗装後の汚れ落とし 1 2022/04/03 13:13
- 化学 【部屋の湿気対策】ベストはどれ? 部屋の湿気対策として扉と窓を閉め切った密閉区で換気扇のみで湿気対策 2 2022/03/30 00:11
- 教えて!goo 最近教えてgooの質問をクリックしても内容表示されない 5 2022/09/18 13:27
- 魚類 ベタの松かさ病。多分末期。次はどうしたらいいでしょうか? 31日の夜、ベタが底で動かなっているのを確 2 2022/09/03 20:27
- その他(悩み相談・人生相談) 駐車場の管理会社とのトラブルについて相談させてください。 先日、24時間パーキングに24時間を超えて 4 2022/04/12 15:48
- 消費者問題・詐欺 時計を買ったところ ①時計が止まるので店に送り返したところ電池切れであったため電池を交換した。 ②再 5 2022/07/15 22:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaScriptのコードの修正をお...
-
google apps scriptの終了のさせ方
-
JavaScript でのリアルタイム時...
-
jqGridについて
-
C#OpenCv V4にのエラーに関する...
-
1日1回だけ引けるjavascriptお...
-
GASでundefinedエラーが出ます
-
JavaScriptを使って毎日決まっ...
-
並び替えの問題を作りたい
-
vb.netでの記述方法について 以...
-
ジェネレーターの作り方
-
シンプルなweb版スタンプラリー...
-
URLのパラメータを取得しリンク...
-
C#で、ContextMenuStripに動的...
-
C# 演算 奇数と偶数 表現の仕方
-
jQueryのload()を使用して外部...
-
アコーディオンメニューの高さ...
-
javascriptのタイプミス
-
1日1回だけ引けるjavascriptお...
-
翌月を取得するGASが分かりません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
メールフォームの日付入力フォ...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
ローカルにあるファイルを検索...
-
HTMLで作った時報アプリが動き...
-
ASP.NETのコントロールの値をJa...
-
C# 演算 奇数と偶数 表現の仕方
-
html javascript リンク先アド...
-
gas スプレッドシートがアクテ...
-
javascriptでテーブルに追加し...
-
VSCODE[Python]の設定について
-
JavaScriptで決まった「時刻」...
-
ASP.NET MVCでObjectをjsに渡す
-
イベントが初めの一回しか起き...
-
jqGridについて
おすすめ情報