開発環境
- OS X Mavericks - Apple (OS)
- Dart Editor (開発環境)
- Dartium | Dart/ Structured web apps (ブラウザ, Dart VM 用 (Chromium with the Dart VM))
- Safari (ブラウザ, JavaScript 用)
- Dart (プログラミング言語)
『初めてのJavaScript 第2版』(シェリー・パワーズ著(Shelley Powers著)、武舎 広幸+武舎 るみ訳、オライリージャパン、2009年、ISBN978-4-87311-425-5) の10章(クッキーとその後継技術)、練習問第10-1、10-2.をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
練習問第10-1、10-2.
コード
sample.dart
import 'dart:html';
void main(){
var run = querySelector('#run'),
clear = querySelector('#clear'),
pre0 = querySelector('#pre0');
run.onClick.listen((MouseEvent event){
var result = window.navigator.userAgent + '\n',
visited = readCookie('visited');
result += 'cookie: ';
if (visited == null){
setCookie('visited', '1');
result += 'はじめまして\n';
} else {
var n = int.parse(visited);
setCookie('visited', '${n + 1}');
result += 'こんにちは (訪問回数: ${n + 1})\n';
}
result += 'localStorage: ';
if(window.localStorage.containsKey('visited')){
var n = int.parse(window.localStorage['visited']);
window.localStorage['visited'] = '${n + 1}';
result += 'こんにちは (訪問回数: ${n + 1}回)\n';
} else {
window.localStorage['visited'] = '1';
result += 'はじめまして\n';
}
pre0.text = result;
});
clear.onClick.listen((MouseEvent event) => pre0.text = '');
}
void setCookie(String k, String v){
var expires = new DateTime(2030);
document.cookie = '$k=${Uri.encodeComponent(v)}; ' +
'expires=${expires.toUtc()}; path=/';
}
readCookie(String k){
var cookie = document.cookie,
first = cookie.indexOf('$k=');
if (first >= 0){
var str = cookie.substring(first, cookie.length),
last = str.indexOf(';');
if (last < 0){
last = str.length;
}
str = str.substring(0, last).split('=')[1];
return Uri.decodeComponent(str);
} else {
null;
}
}
void eraseCookie(String k){
var expires = new DateTime(2000);
document.cookie = '$k=; expires=${expires.toUtc()}; path=/';
}
0 コメント:
コメントを投稿