There have been a lot of questions about this although none has really helped.What other options for replacing entire HTML document via W3C DOM? was closer to what I want, but does not answer my questions.
I have a page. When a person clicks a link from that page to another page, the contents of the new page are fetched with AJAX. The responseText contains a whole new page. How do I go about replacing the old content with the new one?
Facebook does this flawlessly, so does Gmail. The page is updated, including its head (I noticed this when the page title changed according to the new content).
So far, I have tried to replace the innerHTML of <html> tag, but variables are carried from one page to another, which cause errors. I also tried document.write(xhr.responseText) but that caused conflicts when history.onpopstate is called, but mostly, it is very slow.
What I have not tried yet is doing document.replaceChild(newDom, document.documentElement), because I couldn't find a proper cross browser way of creating a new document object instance.
So, is there a clean way to cheat the browser that "this is a new page. You should not carry variables from the previous page to this one. Render it as completely different page from this HTML text I have here."?