文字列置換 String.replace は文字列置換としては1つ目にマッチしたものしか置換しませんよ。
正規表現置換なら
subject.replace((new RegExp('search', 'g')), 'replace'); //または subject.replace(/search/g, 'replace');
でマッチしたものすべて置換します。全部置換したいなら嫌でも正規表現置換するしかなさそうですね(ほかにやり方あったら教えてください)
なぜかFireFoxだけは
subject.replace('search', 'replace', 'g');
って第3引数に'g'フラグをいれると文字列置換ですべて置換する謎。replaceメソッドに第3引数いれれるなんてのはECMAの仕様書に載ってないはず。