2013年11月13日水曜日

開発環境

『初めてのJavaScript 第2版』(シェリー・パワーズ著(Shelley Powers著)、武舎 広幸+武舎 るみ訳、オライリージャパン、2009年、ISBN978-4-87311-425-5) の10章(クッキーとその後継技術)、練習問第10-1、10-2.をDartで解いてみる。

その他参考書籍

練習問第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 コメント:

コメントを投稿