Can someone explain briefly how this works? I was under the assumption that you need to download the blockchain to be able to mine. Or in-browser mining just takes stabs in the dark?
Hash(nonce + Hash(chain[including with new transactions])) < value.
So in some sense you need the chain but you can pass Hash(chain) to a client and let that just increase nonce and hash it.
Without synchronisation the found block might be for a stale chain but if you're using someone else's power you don't care, and the nature of distribution here means it's likely to be fresh anyway in the unlikely chance something is found.
Hash(nonce + 2^256 * Hash(chain[including with new transactions])) < value
Still an oversimplification, of course.