06/08/12 02:39:54
今さら真面目に>>134見てみたけど、面白いねこれ。
まず、拡張子は .bat だから基本的にこれはバッチファイル。
だから引数を %* で食えるんだね。
バッチだったら "<html>" 以下は文法エラーじゃないかと一見思えるが、
その2行上でexit してる。バッチはインタプリタなので exit 以下は無視
されるので問題ない。ふむふむ。
で、このバッチが何をしているかというと、自分自身を mshta.exe の引数
に渡してる。(2行目)
ここでこのファイルは HTAファイルとして mshta.exe に評価されることに
なる。
じゃー今度は <html> より上の部分が文字列として表示されてしまうじゃん
かというと、これはこれで<html>より上はしっかり HTML 的にコメントアウト
されてる。なるほど!
いやいや待ちたまえ、rem [[remove_tag]] はコメントアウトされてないじゃ
ないか。その通り。
そのために ev_onload() で「"[[remove_tag]]" という文字列を含むノード
は中身を空にする」って作業を入れてるわけだ。おもしろ~い。
そこで>>134氏に2つ質問。
・数行前にはああ書いたけど、本当は前半の <!-- --> はオマケだよね?
<html>より上は1つのTextノードになるから、どっちみち ev_onload() で
除去される。
・"[[remov"+"e_tag]]" は必要なの?<script>はElementノードだから
nodeValue は null。影響ないんじゃない?