Hatena::Groupjavascript

JavaScriptで遊ぶよ

 | 

2010-10-25

DOM ベースな HTML Sanitizer

06:58

html-sanitizer.js というのがあって、これをそのまんま DOM ベースにするとどうなるかってことで書いてみた。

〇〇縛りプログラミングみたいな感じで、元のコードをできるだけ再利用して作るということを目指して作ったので、けっこう実験的。速さとかはあまり考えてない。

自分ルール。

  • html4-def.js をそのまま使う。
  • sanitizeAttribs 関数はまったく同じものを使う。
  • html.makeHtmlSanitizer → makeSanitizer は同じロジックでやる。
  • makeSaxParser → makeWalker は変えてもいい。パーサーだった部分を、ツリーを歩くやつにした。
  • インプットのほうの DOM は DOM1 Core (firstChild, nextSibling, parentNode, attributes, nodeName, nodeValue など) しか使わない。
    • 確か xhr.responseXML で作ったドキュメントとかだとそのぐらいのメソッドしか使えないんじゃなかったっけ?うろ覚えだけど。

とりあえず Wikipedia が表示できるようになったので満足。http://jsfiddle.net/YQXaT/

パフォーマンスを考えるならまず importNode を使って、未知の要素は脱皮させながらやるのがいいのかもしれない。

トラックバック - http://javascript.g.hatena.ne.jp/edvakf/20101025
 |