HTMLBuilder.js

ほったらかしにしてある自分のところのJavaScriptファイルをまず何とかすべき。一番気分が悪いのがDOM関係で、某ブラウザのバグゆえ止む無くdocument.writeする部分と、DOM APIを利用して生成する部分がある。

これを何とかしようということで、HTMLのモデルをもう一段抽象化してみた。

// 使用例:
var tree = {
// Objectリテラルを利用した文書フラグメントの表記
  div:
  [
    { h3: "Heading Level3" },
    { p: "paragraph." },
    { $comment: "comment" },
    {
      ul:[
        { li: "item1" },
        { li: "item2" }
      ]
    }
  ],
  $attrs: {id: "d2003", title: "test"}
}

var builder = new HTMLBuilder();
builder.feed(tree);

// document.writeする場合
builder.setLevel(0);
document.write( builder.build() );

// DOM 1 HTMLを利用する場合 (未実装)
builder.setLevel(1);
var elmDiv = builder.build();
Element.appendChild(elmDiv);

/* 生成されるHTML
<div id="d2003" title="test">
<h3>Heading Level3</h3>
<p>this is a paragraph.</p>
<!--comment-->
<ul>
<li>item1</li>
<li>item2</li>
</ul>
</div>

JavaScriptは、HTMLの要素等を生成する部分の視認性が悪すぎてメンテナンスする気力が奪われる。かといってこの表記を利用しても、繰り返し生成する部分には関数リテラルを使うしかなく、視認性が向上するケースは結構少ないことに気づいて、やる気喪失。

Re: 備忘録031101-30/趣味のWebデザイン

ウィンドウ幅を最大にすることしか知らない(または最大表示を常態化し、その習慣を頑固に守る)のとユーザースタイルシートを知らない、使えないのとは程度の差で、本質的な違いはありません。

「本質的な」を友好的に解釈すればその通りです。

前者の無知には対応せず、後者の無知には対応するのが、よりよいスタイルを考える場合の原則だ、というそふぃあさんの基準は、私には納得し難いものです。

全く同意ですが、私はそのような基準を持っていません。私はこう書いたのです:

閲覧者がユーザースタイルシートを知らない、使えないのは当たり前だから、ユーザースタイルシート知っていることを前提にして出鱈目なスタイルシートを書くことも、大反対。

出鱈目なスタイルシートを書くことを否定しているのであって、ユーザースタイルシート知らない人も、等しく私は考慮に入れません。即ち後者の無知にも「対応」しません。誤読、曲解甚だしい。

後者の無知に対応するどころか、むしろ全くの逆です。私は閲覧者がユーザースタイルシートを知っていることを前提にしています。それを前提にして、どうやって良いスタイルシートを追求するかを考えています。例えば、ワンポイントを修正するユーザースタイルシートとバッティングしないもの等、ユーザースタイルシートと親和性の高いものを目指す予定です。極めて難しいですが。

要するに私の基準はただ一つ、つまりメディアの特性を最大限生かすようなスタイルシートを追求することです。私の良いスタイルシートの定義は何度も何度も書いたはずです:

  • より良いscreenメディア向けのスタイルシートに接近する方法は、解像度に依存せず、そのメディア特有の閲覧方法を邪魔しないようにすることである。

これを基準にして、閲覧者等を想定します。どれを無知と呼んで何を無知と呼ばぬかという程度の問題が入り込む余地はありません。