Assuming you mean “HTMLElementNodes” as opposed to “All nodes” (which would include such things as text nodes and also be skipped by your jQuery example) then:
document.getElementsByTagName('*').length
This still requires the use of DOM though. Pure JavaScript can’t interact with an HTML document other than as a string of text.