Hatcher's Exercise 3.3.5 First of all, good people, I know that this isn't the first time that a question has been asked regarding Ex. 3.3.5 from Hatcher's Algebraic Topology. It goes:

Show that $M \times N$ is orientable iff $M$ and $N$ are both orientable.

It being implicit in the question that both $M$ and $N$ are manifolds. The problem with this particular question is that all model answers I've seen (including the ones posted here) to it so far have made use of the cross product such as it is defined in homology, a topic which Hatcher treats first in Section 3.B, long after this question has been posed.
My question is, is it possible to construct a solution to the exercise only making use of the tools that Hatcher has made available to the reader up to this point in the book, or was a bit of slip on Hatcher's part to include it this early in the text?
I look forward to see what you can come up with!
 A: There is a straightforward argument for closed manifolds using only the techniques presented by that point. For the general case, the argument below can be made to work, but you will probably object that it requires too-advanced tools (eg you have to reprove this theorem for a different theory, may have to introduce homology with locally finite chains, etc).
It follows from Corollary 3.28 of Hatcher that a closed connected manifold is orientable if, and only if, $H^m(M;\Bbb Q) \cong \Bbb Q$. If it is not, then this group is isomorphic to $0$.
Now the Kunneth theorem gives $$H^{m+n}(M \times N;\Bbb Q) \cong \bigoplus_{j+k = m+n} H^k(M; \Bbb Q) \otimes_{\Bbb Q} H^j(N;\Bbb Q).$$ Notice that these latter groups vanish for $k>m$ and $j>n$. If $k \leq m$ and $j \leq n$ with $k+j = m+n$, it follows that $k=m$ and $j=n$, so that $$H^{m+n}(M \times N; \Bbb Q) \cong H^m(M;\Bbb Q) \otimes H^n(N;\Bbb Q).$$ The right-side group is $\Bbb Q$ if both $M$ and $N$ are orientable and is $0$ otherwise, proving the desired statement for closed connected manifolds.
Doing this in general will require talking about relative cohomology with compact support instead.
