VBS scriptとKerio

IT Proの記事がずっと長いことを読めないでいた。理由は大体分かっていて、ドロップダウン形式のスクリプトが以下のようになっていたために、記事がコメントアウトされた状態になっていたからだ。


<!--お知らせ 枠-->




<SCRIPT LANGUAGE="JavaScript">
<!--
var swf_click = "http://itpro.nikkeibp.co.jp/premium/";
var dcswf_click = escape(swf_click);
var ShockMode = 0;
var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
if (plugin && parseInt(plugin.description.substring(plugin.description.indexOf(".")-1)) >= 5) 
{
ShockMode = 1;
}
else if (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 
&& (navigator.userAgent.indexOf("Windows 95")>=0 || navigator.userAgent.indexOf("Windows 98")>=0 || navigator.userAgent.indexOf("Windows NT")>=0)) {
document.write(&#39;

<NOSCRIPT>
<A HREF="http://itpro.nikkeibp.co.jp/premium/" target="_blank"><IMG SRC="/parts/200409/SSI/news_s.gif" WIDTH="350" HEIGHT="50" BORDER="0" ALT="Click Here!"></A>
</NOSCRIPT>


<!--//お知らせ 枠-->

おわかりだろうか?つまりが</script>がないまま<NOSCRIPT>要素が始まり、実質的にページ末の</script>までがコメント扱いということになっていたのだ。
しかしなんでまたITproたる者がこんな変なミスをしているのか長いこと分からなかったのだが、意外なところに犯人がいた。
Kerio Personal Firewallのwebフィルタリングは様々なScriptをシャットダウンしてくれる非常にできのよろしいPFWで私は非常に愛用していた。
しかし、偶然FWを切っているときにIT Proの記事が読めることをに気付き、片っ端から設定を見直したところ、VBScriptがどうも怪しいと思いチェックをハズしたところ、正常に表示された。どうも本来else if以下が、


else if (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 
&& (navigator.userAgent.indexOf("Windows 95")>=0 || navigator.userAgent.indexOf("Windows 98")>=0 || navigator.userAgent.indexOf("Windows NT")>=0)) {
document.write(&#39;<SCRIPT LANGUAGE=VBScript\> \n&#39;);

となるところの最後<code>&#39;<SCRIPT LANGUAGE=VBScript\> \n&#39;);</code>から<!--//お知らせ 枠-->の上にある<NOSCRIPT>までごっそり無視するようなフィルタリングをかけていたようだ。同様のフィルタリングは他のスクリプトにも適用されているようで、JSのソースが晒されていることがあるのもこのせいだったみたいだ。
てっきりFirefoxのせいかと思いユーザースタイルシートや拡張との相性を疑っていたのが馬鹿みたいな結論で徒労感がするのだが、これでとりあえずITproの記事が読めるようになったのでヨシとしたい。

余談

ちなみにIEでは記事が読めた。どうも<!--//お知らせ 枠-->-->によってコメントアウトは終了、scriptの終了タグをnoscript要素前に補完という解釈をしていたらしい。
しかしOpera7.5もfirefoxと同様の挙動をしていたようなので、スクリプト要素内のコメント<!--から、-->までをコメントとしないといけないようなレンダリングをするのが正しいようだ。仕様書は読んでないけれど