2007年9月24日月曜日

URLリストに登録されていないサイトのJavaScriptを無効にするProxomitronフィルタ

動作内容は以下の通り。

  • script要素を削除 (後方にnoscript要素があれば、noscript要素を外して展開する)
  • a要素/href属性で指定されたjavascriptスキームを無効なスキーム「killjavascript」に置換
  • 要素埋め込み型のon****属性を無効な属性「killon****」に置換
[Patterns]
Name = "Disable JavaScript NoSafeList [2007/09/24] test2"
Active = TRUE
URL = "$TYPE(htm)(^$LST(JSEnable))"
Limit = 2048
Match = "$NEST(<script[ >],</script>)"
        "$SET(#=<script type='comment'> Disable JavaScript NoSafeList </script>)"
        "( $NEST(<noscript>,\0,</noscript>)"
        "$SET(#=\r\n<div class='view_noscript'>\0</div>)"
        "|)|"
        "(<a\s[^>]++href=)\#$AVQ((["']|)\#(javascript:*)\0)(^(^[ >]))"
        "$SET(#=kill\0)|"
        "(<[a-z]+{1,*}[0-9]+(^(^\s))[^>]++\s)\#(^(^on"
        "(abort|blur|change|click|dblclick|dragdrop|error|focus|key(down|press|up)|load|"
        "mouse(down|move|out|over|up)|move|reset|resize|select|submit|unload)=))"
        "$SET(#=kill)"
Replace = "\@"

今回は技術的な興味からフィルタを作成しましたが、JavaScriptの有効/無効はブラウザ側で制御した方が確実だと思います。
これ以外の方法でJavaScriptが使われたとしても、ブラウザがJavaScriptを許可しなければ無効となるので。

ラベル: ,

2007年9月3日月曜日

後述のa要素を含めてリンク化するProxomitronフィルタ

Thinking Archive(仮)で公開しているフィルタ「http Text to Link [2007/07/08]」は、以下のHTMLソースがあったとき、URLテキストからa要素の手前までをリンク化します。

<p>
http://www.nicovideo.jp/watch/<a href="http://www.nicovideo.jp/watch/sm111111" class="video">sm111111</a><br />
http://www.nicovideo.jp/<a href="http://www.nicovideo.jp/mylist/111111/1111111" class="video">mylist/111111/1111111</a>
</p>

下記フィルタは、URLテキスト後述のa要素を含めてリンク化します。

[Patterns]
Name = "NicoVideo: http Text to Link with anchor [2007/09/03] test3"
Active = TRUE
URL = "$TYPE(htm)www.nicovideo.jp/watch/?"
Limit = 512
Match = ">(^$TST(Textarea=y))"
        "([^<>]++)\#(http(://|s://)\1|ttp(://|s://)\1)\2"
        "([0-9a-z_-]+{1,63}(.[0-9a-z_-]+{1,63})++{0,4}.[0-9a-z_-]+{2,6}(:[0-9]+{1,5}|(^[.0-9:a-z_-]))"
        "(/[!=#-&(-;?-[\]-~]+|(^/)))\3(^['"])"
        "(<a\s[~>]++href=$AV(http$TST(\1)$TST(\3)\4)[^>]+>)\#"
        "(^(^$TST(\4)</a>))"
Replace = ">\@<span style="font-size: small">Linked:&#160;</span>\2\3"

上記はニコニコ動画限定ですが、このやり方なら汎用フィルタにすることも可能だと思います。 問題がなさそうなら、既存の「http Text to Link」と統合します。

ラベル: ,