http://nurucom-archives.hp.infoseek.co.jp/digital/escape-codec-library.htmlってMacOS(9・X両方)版IEだと使えないのね

EscapeSJIS=function(str){
	return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){
		var c=s.charCodeAt(0),m;
		return c<128?(c<16?"%0":"%")+c.toString(16).toUpperCase():65376<c&&c<65440?"%"+(c-65216).toString(16).toUpperCase():(c=JCT11280.indexOf(s))<0?"%81E":"%"+((m=((c<8272?c:(c=JCT11280.lastIndexOf(s)))-(c%=188))/188)<31?m+129:m+193).toString(16).toUpperCase()+(64<(c+=c<63?64:65)&&c<91||95==c||96<c&&c<123?String.fromCharCode(c):"%"+c.toString(16).toUpperCase())
	})
};

たとえばこの関数だとエスケープが必要な文字を一文字ずつ、
無名関数でSJISでURLエンコードしてやってて、
他の関数でも文字コードが違う以外は概ね一緒です。
MacOSIEだと一文字ずつ無名関数の実行結果と置換するのではなくて、
一文字ずつ無名関数の文字列?*1と置換してしまうようです。
高階関数自体サポートしてないのかね?

*1:ソースコードの一部。要は"function(s){(中略)}"