這是一個關於技術性問題的問題,我想在瀏覽器中更深入地瞭解JavaScript。瀏覽器javascript中是否存在持久化DOM這樣的事情?
所以情況是,第一頁上唯一的事情是一個鏈接,可能的一些JS:
<script>something</script>
<a href="/page2.php">link</a>
當點擊第二頁的鏈接,可一些JavaScript來「結轉」至第2頁,這樣JS可以在頁面2上運行,而不需要原始標記中的任何腳本?
我想你可以這樣做:
<a onClick="loadXMLDoc();" href="/page2.php">link</a>
loadXMLDoc函數摘錄:
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
window.location = "/page2.php";
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert('worked');
}
...
xmlhttp.open("POST","/responsedelay.php",true);
...
的想法是讓一個Ajax請求到一個單獨的頁面,上面有一個計時器(在PHP中),幾秒鐘後(比如說10),給出響應。到那個時候,新頁面已經加載,我們希望仍然有JavaScript訪問當前窗口的DOM。唉,這不起作用,不太出人意料,仍然試圖在箱子外面思考!有任何想法嗎?
我猜測唯一的辦法是在page1的上下文中打開page2(即將第2頁元素添加到第1頁),但也許有一種我不知道的新穎方式!
您可能會感興趣[Turbolinks(https://github.com/rails/turbolinks/),剛剛取代了body元素和離開頁面,其所有的JavaScript狀態仍然完好無損。儘管我從未使用過它。 – jpsimons
如果你正在談論實際上離開一個頁面,到達另一個頁面,那麼不,這些腳本需要包含在將使用它們的頁面中。但是你真的需要加載一個新頁面嗎?如果您正在進行XHR請求,爲什麼不直接用響應更新現有頁面呢? –
感謝您的回答,我想調查持久DOM訪問的潛力以及可以採取多大措施,而不一定要加快或提高效率。 – user1166981