Let
$$S= \begin{pmatrix}
D_1 & D_2\\
D_3 & D_4
\end{pmatrix}$$
Here is a completely different way to consider this issue by using a certain simultaneous re-ordering operation on rows and columns of $S$ giving rise to a matrix $B$ which is block diagonal (see formula (2) with diagonal blocks that will be denoted $B_k$).
This process can be expressed under the equivalent matrix form :
$$B=P^{-1}SP\tag{*}$$
where $P$ is a certain shuffling permutation matrix that will be given below in (1) corresponding to the new row ordering :
$$[0,7,1,8,2,9,3,10,4,11,5,12,6,13]\tag{0}$$
whereas $P^{-1}$ (which is also equal to $P^T$) operates in an identical way on columns.
As $\det(B)=\det(S)=\prod_k \det(B_k)$, we obtain the desired result.
More precicely, let $S$ be the initial matrix :
$$S=\left(\begin{smallmatrix}
a & & & & & & &|& h & & & & & & \\
& b & & & & & &|& & i & & & & & \\
& & c & & & & &|& & & j & & & & \\
& & & d & & & &|& & & & k & & & \\
& & & & e & & &|& & & & & l & & \\
& & & & & f & &|& & & & & & m & \\
& & & & & & g &|& & & & & & & n \\
\hline
h & & & & & & &|& a & & & & & & \\
& n & & & & & &|& & g & & & & & \\
& & m & & & & &|& & & f & & & & \\
& & & l & & & &|& & & & e & & & \\
& & & & k & & &|& & & & & d & & \\
& & & & & j & &|& & & & & & c & \\
& & & & & & i &|& & & & & & & b
\end{smallmatrix}\right)$$
Let
$$P = \left(\begin{smallmatrix}
1 & & & & & & & & & & & & & \\
& & & & & & & 1 & & & & & & \\
& 1 & & & & & & & & & & & & \\
& & & & & & & & 1 & & & & & \\
& & 1 & & & & & & & & & & & \\
& & & & & & & & & 1 & & & & \\
& & & 1 & & & & & & & & & & \\
& & & & & & & & & & 1 & & & \\
& & & & 1 & & & & & & & & & \\
& & & & & & & & & & & 1 & & \\
& & & & & 1 & & & & & & & & \\
& & & & & & & & & & & & 1 & \\
& & & & & & 1 & & & & & & & \\
& & & & & & & & & & & & & 1
\end{smallmatrix}\right)\tag{1}$$
Then :
$$B=P^{-1}SP=
\left(\begin{smallmatrix}a & h & & & & & & & & & & & & \\
h & a & & & & & & & & & & & & \\
& & b & i & & & & & & & & & & \\
& & n & g & & & & & & & & & & \\
& & & & c & j & & & & & & & & \\
& & & & m & f & & & & & & & & \\
& & & & & & d & k & & & & & & \\
& & & & & & l & e & & & & & & \\
& & & & & & & & e & l & & & & \\
& & & & & & & & k & d & & & & \\
& & & & & & & & & & f & m & & \\
& & & & & & & & & & j & c & & \\
& & & & & & & & & & & & g & n \\
& & & & & & & & & & & & i & b
\end{smallmatrix}\right)\tag{2}$$
whose determinant is the product of the determinants of the diagonal blocks, i.e.,
$$(a^2-h^2)(d e - k l)^2 (c f - j m)^2 (b g - i n)^2$$
as desired.
Here is the "Sage" program that I have written in order to ease and/or check my calculations.
[Let us recall that Sage is accessible to everybody, being a public domain software]
var('a b c d e f g h i j k l m n')
D1=diagonal_matrix(7,[a,b,c,d,e,f,g])
D2=diagonal_matrix(7,[h,i,j,k,l,m,n])
D3=diagonal_matrix(7,[h,n,m,l,k,j,i])
D4=diagonal_matrix(7,[a,g,f,e,d,c,b])
S=block_matrix([[D1,D2],[D3,D4]])
show(S)
L=[0,7,1,8,2,9,3,10,4,11,5,12,6,13]
B=S.matrix_from_rows(L).matrix_from_columns(L)
show(B)
dd=B.determinant().factor()
show(dd)
A less efficient way to obtain matrix B
#P=P.matrix_from_columns(L)
#B=(P.T)SP; # formula (*)
Important remark : ordering given by (0) isn't unique, i.e., matrix $P$ giving a diagonal-by-blocks structure using conjugation (formula (*)) isn't at all unique; here is another one
$$[7, 0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6]$$
which has been obtained by using the reverse Cuthill McKee algorithm which "returns a permutation vector p such that S(p,p) tends to have its diagonal elements closer to the diagonal than S" (extracted from Matlab documentation of its "symrcm" routine).