こんな感じで監視するといいでしょう
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>