JavaScriptの最近のブログ記事
以前にMovableTypeの設置を引き受けたサイトから、袖メニューに「リンク集」を設けたい、という問い合わせが有った。
要するに「関連サイトへのリンク」だ。
それ自体は普通にいろいろなサイトで多く見られるものであり、特別な依頼では無い。
問題は、このサイトはカスタマイズ仕様のテンプレートを採用しているため、MTタグについて若干の知識がある人でなければ袖メニュー部分をどのように書き出しているのかを理解するのは難しいだろう。
(当該サイトでは、依頼者は日々のエントリー投稿を行うのみであり、それ以上のスキルは無い)
・・・さて、しばし考えてみる。
- A案)
- 袖メニューテンプレートの当該箇所を書き換えるPHPを作り、専用の管理画面から操作する。
- B案)
- 袖メニューの当該箇所にインラインフレームを組み込み、読み込まれる「リンク集」ページを編集するPHPを作って(以下同上)。
- C案)
- リンク集データをCSVで持つようにして、Ajaxで書き出す。CSVの編集は、PHPで(以下同上)。
- D案)
- MT-moduleをPerlで作成する。
どれも一長一短だよなぁ・・・
まず D案は、一番正攻法ではあるが、このサイトのために作るにはコストパフォーマンス悪すぎ。
B案とC案は、どっちもどっちだが、個人的にはAjaxを用いるC案のほうが楽しい。
A案は、テンプレ破損の恐れが無きにしもあらず・・・。またテンプレ修正後に再構築を行わないと反映されないし。
となると、閲覧環境をJavaScript必須に限定して良ければ C案か。
・・・あとはクライアント次第だな
先のエントリーにて、ソース表示に用いている blockquote タグのCSSを修正した件について書いたが、今度はソースの一覧性・視認性に問題があるような気がして、サポート用のスクリプト(JavaScript)を追加してみた。
var btnWrite = "<input type=\"button\" onclick=\"selwin(this);\" value=\"copy用ウィンドウ\"><p> </p>";
var t;
var s;
function selwin(o){
var p = o.parentNode;
var c = p.childNodes;
for(i=0;c.length>i;i++){
if(c[i].tagName){
if(c[i].tagName == "BLOCKQUOTE"){
t = c[i].innerHTML;
s = window.open('','s','width=400,height=400,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes,resizable=yes');
setTimeout("wr();",1000);
}
}
}
}
function wr(){
if(!window.s.closed){
window.s.document.body.innerHTML = t;
window.s.document.title="コピー用ウィンドウ";
}
}
function wb(){
document.write(btnWrite);
}
http://d.hatena.ne.jp/Pujols/20070221
ということらしい
try {
return new ActiveXObject("Msxml2.XMLHTTP.6.0");
}
catch (e) {
try {
return new ActiveXObject("Msxml2.XMLHTTP.3.0");
}
catch (ee) {
return null;
}
}
