JavaScript で WEBプログラミングをしていると、複数の html ページの間で変数の値を受け渡したい場合が出て来る。
当記事では、ワテが知っている幾つかの方法を紹介したい。
では、本題に入ろう。
JavaScriptでデータを受け渡す幾つかの方法
調べた限りでは、各種の方法があるようだが、ワテが試したのは、
window.postMessage() // メッセージを送信 window.addEventListener("message", ... ) // メッセージを受信
と
localStorage.setItem() // ローカルストレージに書き込む localStorage.getItem() // ローカルストレージを読み取る
の二種類だ。
前者は、メッセージを送受信する方式。
後者は、ローカルストレージという記憶領域に読み書きする方法だ。
Cookie に良く似ているが Cookie の場合、書き込む時に有効期限何日とかの値も指定する必要があるが、ローカルストレージには無いようだ。
JavaScript の変数が変更されたタイミングを検出する
さて、ここでは上記の二例とは少し趣が異なるが、何かに使えそうな機能を見つけた。
それは JavaScript の変数の内容が変更されたタイミングを検出する事が出来るのだ。
その例を以下に示す。
実際に実行してみたい人は、このHTMLの部分をコピペしてメモ帳にでも貼り付けて
test.html など適当な名前で保存してそれをブラウザーで開いてみると良い。文字コードはUTF-8にしておくと良い。他の文字コードだと化ける場合がある。
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <script type="text/javascript"> var Item = function (val) { this._val = val; } Item.prototype.setValue = function (val) { this._val = val; alert('Itemの値が ->' + val + '<- に変更された。'); } Item.prototype.getValue = function () { return this._val; } function btn_set_CB() { var datetime = new Date(); Item.prototype.setValue(datetime); } </script> <input type="button" value="値をセットする" onclick="btn_set_CB()" /><br /> </body> </html>
実行結果は以下の通り。
ボタンを押すと、押した日時の値を文字列として変数 Item に保管 (setValue) する。
そのタイミングで、アラート画面が出る。
まあ、何かに使えそうな機能だ。
コメント