>>170
>>const PATTERN_SHORTCUT = RegExp([x for (x in PATTERN)].join('|'), 'gi');

>>textNode.nodeValue = textNode.nodeValue.replace(PATTERN_SHORTCUT, function($0) PATTERN[$0.toLowerCase()]);

「[x for (x in PATTERN)]」と、
「function($0) PATTERN[$0.toLowerCase()]」という、
Firefoxぐらいでしか動作しない配列内包表記と式クロージャが原因だな

上の場合、やってることは単純なので新しめのブラウザならどれでも動くES5のObject.keysで簡潔に代用できるはずだよ
つまり、

const PATTERN_SHORTCUT = RegExp(Object.keys(PATTERN).join('|'), 'gi');

下の場合も簡潔に書き直せる

function($0) { return PATTERN[$0.toLowerCase()]; }

この二箇所をこのように修正すれば動くんじゃないかな