2010年08月27日

JavaScript:サイトのhtmlソースを取得する

仕掛けはここの記事と同じ。受け取るデータがDBデータでなくurlエンコードされたhtmlソースというだけ。やってることはこのスクリプト参照。

アドレス :
htmlソース
posted by 忘却の達人 at 06:45| Comment(0) | TrackBack(0) | JavaScript | このブログの読者になる | 更新情報をチェックする

2010年08月21日

JavaScript:日付オブジェクトにformatメソッドを追加

JavaScriptのDateオブジェクトにVBのFormat関数もどきのメソッドを追加。
非常に手抜きな処理の実装だけど自分的には事足りてるので良しとする。
 
 書式文字
ggg元号(明治、大正、昭和、平成)
gg元号(明、大、昭、平)
g元号(M、T、S、H)
ee和暦年2桁(1桁の場合は前ゼロ付加)
e和暦年
yyyy西暦年4桁
yy西暦年下2桁
mm月2桁(1桁の場合は前ゼロ付加)
m
aaaa曜日(日曜日…土曜日)
aaa曜日(日…土)
dd日2桁(1桁の場合は前ゼロ付加)
d
hh時2桁(1桁の場合は前ゼロ付加)
h
nn分2桁(1桁の場合は前ゼロ付加)
n
ss秒2桁(1桁の場合は前ゼロ付加)
s
zzzミリ秒3桁(3桁未満の場合は前ゼロ付加)
zミリ秒

Date.prototype.format = function (formatStr) {
if (formatStr) {
var s = formatStr;
} else {
var s = "yyyy/mm/dd hh:nn:ss";
}
function getWareki(d, p) {
var wareki = new Array(
{"year": 0, "g": "", "gg": "", "ggg": "西暦"},
{"year": 1867, "g": "M", "gg": "明", "ggg": "明治"},
{"year": 1911, "g": "T", "gg": "大", "ggg": "大正"},
{"year": 1925, "g": "S", "gg": "昭", "ggg": "昭和"},
{"year": 1988, "g": "H", "gg": "平", "ggg": "平成"}
);
if (d < new Date(1868, 8, 8)) {
return wareki[0][p];
} else if (d < new Date(1912, 6, 30)) {
return wareki[1][p];
} else if (d < new Date(1926, 11, 25)) {
return wareki[2][p];
} else if (d < new Date(1989, 0, 8)) {
return wareki[3][p];
} else
return wareki[4][p];

}
function getWeek(d, p) {
return "日月火水木金土".charAt(d.getDay()) + (p === "aaa" ? "" : p === "aaaa" ? "曜日" : p);
}
function fillZero(value, zero) {
return (zero + value).slice(- zero.length);
}
s = s.replace(/ggg/g , getWareki(this, "ggg"));
s = s.replace(/gg/g , getWareki(this, "gg"));
s = s.replace(/g/g , getWareki(this, "g"));
s = s.replace(/ee/g , fillZero(this.getFullYear() - getWareki(this, "year"), "00"));
s = s.replace(/e/g , (this.getFullYear() - getWareki(this, "year")).toString());
s = s.replace(/yyyy/g, this.getFullYear().toString());
s = s.replace(/yy/g , fillZero(this.getYear() % 100, "00"));
s = s.replace(/mm/g , fillZero(this.getMonth() + 1, "00"));
s = s.replace(/m/g , (this.getMonth() + 1).toString());
s = s.replace(/aaaa/g, getWeek(this, "aaaa"));
s = s.replace(/aaa/g , getWeek(this, "aaa"));
s = s.replace(/dd/g , fillZero(this.getDate(), "00"));
s = s.replace(/d/g , this.getDate().toString());
s = s.replace(/hh/g , fillZero(this.getHours(), "00"));
s = s.replace(/h/g , this.getHours().toString());
s = s.replace(/nn/g , fillZero(this.getMinutes(), "00"));
s = s.replace(/n/g , this.getMinutes().toString());
s = s.replace(/ss/g , fillZero(this.getSeconds(), "00"));
s = s.replace(/s/g , this.getSeconds().toString());
s = s.replace(/zzz/g , fillZero(this.getMilliseconds(), "000"));
s = s.replace(/z/g , this.getMilliseconds().toString());
return s;
}

ex.)
new Date("2010/1/2 3:45:6").format("yyyy/mm/dd hh:nn:ss");
     ↓
2010/01/02 03:45:06

posted by 忘却の達人 at 12:38| Comment(0) | TrackBack(0) | JavaScript | このブログの読者になる | 更新情報をチェックする

元号の最初の日

元号の初日
 
明治 : 1868/09/08
大正 : 1912/07/30
昭和 : 1926/12/25
平成 : 1989/01/08
 
posted by 忘却の達人 at 09:49| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2010年08月03日

Delphi:CSVを扱うクラス

DelphiのTStringsはCSVを行単位でしか読み込めないので、表単位で読み込むCSVクラスを自作した。とりあえずCSVファイルの入出力とソートの最小限の機能のみ。ダウンロードはこちら
posted by 忘却の達人 at 08:14| Comment(0) | TrackBack(0) | Delphi | このブログの読者になる | 更新情報をチェックする

2010年08月02日

JavaScript:リッチテキストエディタで行間を詰める

iframeをdesignmode=onしてリッチテキストエディタを作る場合、改行で<p>タグが挿入されるので行間が広く空いてしまう。行間を開けないようにするには、最初にiframeのbodyエレメントに<div><br></div>(IEは<div>&shy;</div>)を設定しておく。そうすると改行時に<div>タグが挿入されるようになり、行間が詰まるようになる。
但しIEは全選択→削除とすると<p>タグに戻るのが難点。回避方法がありそうな気はするが今のところ不明。
 
作成したリッチテキストエディタはこちら。文字をに装飾できるようにした。スゴい苦労したけど。(苦笑)
posted by 忘却の達人 at 07:15| Comment(0) | TrackBack(0) | JavaScript | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。