Message signing and TLS provide different, overlapping guarantees.
TLS guarantees that the data exchanged between your browser and the server is genuine, and the communication between the other guy's browser and the server is genuine. It doesn't protect against a buggy, hijacked, or subverted server. In this scenario, the server is a man-in-the-middle built into the protocol; having end-to-end signatures protects against scenarios where the server can't be trusted.
Client-side signatures can also be subverted, if the client is subverted, or if the client's credentials have been compromised. TLS for the communication doesn't protect against that.
However, TLS does offer some other protections. It provides confidentiality as well as authenticity (end-to-end encryption could provide that as well). It also provides protection against replay and reordering: an old signed message would still be valid, but the server can reject out-of-order messages.