こんな感じで監視するといいでしょう
javascript
1<style>
2td{width:100px;height:100px;text-align:center;}
3</style>
4<script>
5window.addEventListener('DOMContentLoaded', ()=>{
6  const view=document.querySelector('#view');
7  const tbl=document.querySelector('#tbl');
8  const observer = new MutationObserver((mutations) => {
9    mutations.forEach((mutation) => {
10      view.textContent=tbl.textContent;
11    });    
12  });
13  const config = { attributes: true, childList: true, characterData: true };
14  document.querySelectorAll('[contenteditable]').forEach(x=>{
15    observer.observe(x, config);
16    observer.observe(x.firstChild, config);
17    [...x.childNodes].forEach(y=>{
18      observer.observe(y, config);
19    });
20  });
21});
22</script>
23<table border id="tbl">
24<tbody>
25<tr>
26<td contenteditable>1</td>
27<td contenteditable>2</td>
28<td contenteditable>3</td>
29</tr>
30<tr>
31<td contenteditable>4</td>
32<td contenteditable>5</td>
33<td contenteditable>6</td>
34</tr>
35<tr>
36<td contenteditable>7</td>
37<td contenteditable>8</td>
38<td contenteditable>9</td>
39</tr>
40</tbody>
41</table>
42<div id="view"></div>