汚染源は McAfee SiteAdvisor だった!!

Mozex 1.9.5 が動かないのも Make Link 3.0.2 が動かないのも、McAfee SiteAdvisor が Array クラス*1を汚染しているのが原因だった。
McAfee SiteAdvisor は、起動されると https://sadownload.mcafee.com/products/sa/firefox/search.dat をダウンロードするのだが、実はこの中身は JavaScript スクリプトで、これを eval することでスクリプトを拡張している。
しかし、この search.dat はグローバル空間を汚染しまくっており、中でも Mozex や Make Link が動かない原因になっているのが、次の部分だ。

Array.prototype.inArray = function (value)
{
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

これにより、for...in 命令の結果が変わってしまう。

例

ary = new Array();
ary["apple"] = 100;
ary["orange"] = 120;
for (var i in ary) {
	alert(ary[i]);
}

実行結果

100
120
function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
}

まったく、困ったもんだね (`ω´♯)
という訳で、McAfee SiteAdvisor は ポイッ(/--)/ ⌒● した。

*1:JavaScript では、オブジェクトと表現するのが正しい?