Well, It seems that after re-writing DOM, "document.write()" does not call "document.close()", so it need to be called manually!
So the code below:
onclick='document.write(document.getElementById("TA_1").value);'>Test Html</button>
was changed to:
onclick='document.write(document.getElementById("TA_1").value); document.close();'>Test Html</button>
Final code below (Now "Done 4" shows up after "Done 1,2,3"):

<textarea style="width:50%;" rows="15" id="TA_1">
<!DOCTYPE html>
<div style="color:red"> test </div>
<script>
window.onload = function(){alert('Done 4');}
alert('Done 1');
alert('Done 2');
alert('Done 3');
</script>
</textarea>
<br>
<button type="button" onclick='document.write(document.getElementById("TA_1").value); document.close();'>Test Html</button>
<br> - Since "document.write()" is called after DOM load, all the document will be re-written (Intended behavior!)
<br> - It seems that after re-writing DOM, "document.write()" does not call "document.close()", so it need to be called manually!
As for the problem regarding calling "window.onload" more than once as shown below:
("Done End" does not show up after "Done 1, 2")
<div style="color:red;"> Original Html </div>
<textarea id="TA_1"> <!-- _________________________________________ -->
<!DOCTYPE html>
<div style="color:green;"> Text Area Html (DOM Re-Written - Original Html Replaced) </div>
<script>
window.onload = function(){alert('Done End');};
alert('Done 1');
alert('Done 2');
</script>
</textarea>
<script> //________________________________________________________________
window.onload = function(){document.write(document.getElementById("TA_1").value); document.close();};
//Since "document.write()" is called after DOM load, all the document will be re-written
//It seems that after re-writing DOM, "document.write()" does not call "document.close()", so it need to be called manually!
</script>
The solution is to use "setTimeout()" instead:
("Done End" shows up after "Done 1, 2"):
<div style="color:red;"> Original Html </div>
<textarea id="TA_1"> <!-- _________________________________________ -->
<!DOCTYPE html>
<div style="color:green;"> Text Area Html (DOM Re-Written - Original Html Replaced) </div>
<script>
window.onload = function(){alert('Done End');};
alert('Done 1');
alert('Done 2');
</script>
</textarea>
<script> //________________________________________________________________
setTimeout(function(){document.write(document.getElementById("TA_1").value); document.close();}, 1);
//Since "document.write()" is called 1 milliseconds after DOM load, all the document will be re-written
//It seems that after re-writing DOM, "document.write()" does not call "document.close()", so it need to be called manually!
</script>