<?xml version="1.0" encoding="UTF-8"?>
<post>
  <body>I'm creating a script that will replace text smilies like ;) :) :D etc.

It's working fine, but each time a page loads, it makes my browser freeze for about 5 seconds, then it loads all the smilies.

How can I make my script run faster without making my browser hang?

I have already converted the images to data:uris. 
&lt;pre&gt;
&lt;code&gt;
//--- Images ---

var tongue = &quot;data:image/gifAAAAAAACa0GEQSU4YB1TWgIA ...&quot;;
var happy = &quot;data:image/gif;base64,R0lGODlhEQARALMAABy+ASTTAiXWAi ...&quot;;
var lol = &quot;data:image/gif;base64,R0lGODlhEQARALMAABy+ ...&quot;;
var wink = &quot;data:image/gif;base64,R0lGODlhEQARALMAABy+AQCZACTTAi ...&quot;;
var sad = &quot;data:image/gif;base64,R0lGODlhEQARALMAABy+AQAzACHLAiT ...&quot;;
var blush = &quot;data:image/gif;base64,R0lGODlh ...&quot;;
var angry = &quot;data:image/gif;base64,R0lGODlhEQARANUAAB7JAR ...&quot;;
var tears = &quot;data:image/gif;base64,R0lGODlhEQARANUAA ...&quot;;
var stunned = &quot;data:image/gif;base64,R0lGODlhEQARALMAACDIARawARWt ...&quot;;
var cool = &quot;data:image/gif;base64,R0lGODlhEQARANUAAAAAAAAB ...&quot;;
var yawn = &quot;data:image/gif;base64,R0lGODlhEQARANUAAAAAA ...&quot;;
var ill = &quot;data:image/gif;base64,R0lGODlhEQARALMAAAAAAEqZAEudAE+iAFK ...&quot;;
var confused = &quot;data:image/gif;base64,R0lGODlhEQARANUAAB7J ...&quot;;
var love = &quot;data:image/gif;base64,R0lGODlhEQARANUAACXXA ...&quot;;
var mean = &quot;data:image/gif;base64,R0lGODlhEQARANUAAAIAA ...&quot;;
var glad = &quot;data:image/gif;base64,R0lGODlhEQARANUAAAI ...&quot;;

//--- Functions ---

function replaceSmilie(smilie, surl)
{
  var reptext = new RegExp(smilie, &quot;gi&quot;);
  document.body.innerHTML = document.body.innerHTML.replace(reptext, &quot;&lt;img src='&quot; + surl + &quot;' height='17' width='17' align='center' style='border:none;' /&gt;&quot;);
}

//--- Replace ---

/*
replaceSmilie(&quot;:\\)&quot;, happy);
replaceSmilie(&quot;;\\)&quot;, wink);
replaceSmilie(&quot;:P&quot;, tongue);
replaceSmilie(&quot;:\\(&quot;, sad);
replaceSmilie(&quot;8o&quot;, stunned);
replaceSmilie(&quot;80&quot;, stunned);
replaceSmilie(&quot;:o&quot;, stunned);
replaceSmilie(&quot;\\*cool\\*&quot;, cool);
replaceSmilie(&quot;\\*yawn\\*&quot;, yawn);
replaceSmilie(&quot;\\*ill\\*&quot;, &quot;ill&quot;);
replaceSmilie(&quot;\\*angry\\*&quot;, angry);
replaceSmilie(&quot;\\*mad\\*&quot;, angry);
replaceSmilie(&quot;\\*sad\\*&quot;, tears);
replaceSmilie(&quot;\\*cry\\*&quot;, tears);
replaceSmilie(&quot;\\*tears\\*&quot;, tears);
replaceSmilie(&quot;:'\\(&quot;, tears);
replaceSmilie(&quot;:D&quot;, lol);
replaceSmilie(&quot;\\*blush\\*&quot;, blush);
replaceSmilie(&quot;\\*confused\\*&quot;, confused);
replaceSmilie(&quot;\\*love\\*&quot;, love);
replaceSmilie(&quot;\\*mean\\*&quot;, mean);
replaceSmilie(&quot;\\*glad\\*&quot;, glad);
&lt;/code&gt;
&lt;/pre&gt;</body>
  <body-html>&lt;p&gt;I'm creating a script that will replace text smilies like ;) :) :D etc.&lt;/p&gt;

&lt;p&gt;It's working fine, but each time a page loads, it makes my browser freeze for about 5 seconds, then it loads all the smilies.&lt;/p&gt;

&lt;p&gt;How can I make my script run faster without making my browser hang?&lt;/p&gt;

&lt;p&gt;I have already converted the images to data:uris. 
&lt;br /&gt;&lt;pre&gt;
&lt;code&gt;
//--- Images ---

var tongue = &quot;data:image/gifAAAAAAACa0GEQSU4YB1TWgIA ...&quot;;
var happy = &quot;data:image/gif;base64,R0lGODlhEQARALMAABy+ASTTAiXWAi ...&quot;;
var lol = &quot;data:image/gif;base64,R0lGODlhEQARALMAABy+ ...&quot;;
var wink = &quot;data:image/gif;base64,R0lGODlhEQARALMAABy+AQCZACTTAi ...&quot;;
var sad = &quot;data:image/gif;base64,R0lGODlhEQARALMAABy+AQAzACHLAiT ...&quot;;
var blush = &quot;data:image/gif;base64,R0lGODlh ...&quot;;
var angry = &quot;data:image/gif;base64,R0lGODlhEQARANUAAB7JAR ...&quot;;
var tears = &quot;data:image/gif;base64,R0lGODlhEQARANUAA ...&quot;;
var stunned = &quot;data:image/gif;base64,R0lGODlhEQARALMAACDIARawARWt ...&quot;;
var cool = &quot;data:image/gif;base64,R0lGODlhEQARANUAAAAAAAAB ...&quot;;
var yawn = &quot;data:image/gif;base64,R0lGODlhEQARANUAAAAAA ...&quot;;
var ill = &quot;data:image/gif;base64,R0lGODlhEQARALMAAAAAAEqZAEudAE+iAFK ...&quot;;
var confused = &quot;data:image/gif;base64,R0lGODlhEQARANUAAB7J ...&quot;;
var love = &quot;data:image/gif;base64,R0lGODlhEQARANUAACXXA ...&quot;;
var mean = &quot;data:image/gif;base64,R0lGODlhEQARANUAAAIAA ...&quot;;
var glad = &quot;data:image/gif;base64,R0lGODlhEQARANUAAAI ...&quot;;

//--- Functions ---

function replaceSmilie(smilie, surl)
{
  var reptext = new RegExp(smilie, &quot;gi&quot;);
  document.body.innerHTML = document.body.innerHTML.replace(reptext, &quot;&lt;img src=&quot;&quot;&gt;&quot;);
}

//--- Replace ---

/*
replaceSmilie(&quot;:\\)&quot;, happy);
replaceSmilie(&quot;;\\)&quot;, wink);
replaceSmilie(&quot;:P&quot;, tongue);
replaceSmilie(&quot;:\\(&quot;, sad);
replaceSmilie(&quot;8o&quot;, stunned);
replaceSmilie(&quot;80&quot;, stunned);
replaceSmilie(&quot;:o&quot;, stunned);
replaceSmilie(&quot;\\*cool\\*&quot;, cool);
replaceSmilie(&quot;\\*yawn\\*&quot;, yawn);
replaceSmilie(&quot;\\*ill\\*&quot;, &quot;ill&quot;);
replaceSmilie(&quot;\\*angry\\*&quot;, angry);
replaceSmilie(&quot;\\*mad\\*&quot;, angry);
replaceSmilie(&quot;\\*sad\\*&quot;, tears);
replaceSmilie(&quot;\\*cry\\*&quot;, tears);
replaceSmilie(&quot;\\*tears\\*&quot;, tears);
replaceSmilie(&quot;:'\\(&quot;, tears);
replaceSmilie(&quot;:D&quot;, lol);
replaceSmilie(&quot;\\*blush\\*&quot;, blush);
replaceSmilie(&quot;\\*confused\\*&quot;, confused);
replaceSmilie(&quot;\\*love\\*&quot;, love);
replaceSmilie(&quot;\\*mean\\*&quot;, mean);
replaceSmilie(&quot;\\*glad\\*&quot;, glad);
&lt;/code&gt;
&lt;/pre&gt;&lt;/p&gt;</body-html>
  <created-at type="datetime">2008-07-18T23:21:57Z</created-at>
  <forumable-id type="integer">1</forumable-id>
  <forumable-type>Forum</forumable-type>
  <id type="integer">10714</id>
  <topic-id type="integer">2852</topic-id>
  <updated-at type="datetime">2008-07-18T23:25:39Z</updated-at>
  <user-agent nil="true"></user-agent>
  <user-id type="integer">39648</user-id>
</post>
