簡體   English   中英

如何將DOM狀態重置為初始狀態(首次接收頁面時?)

[英]How to reset DOM state to the initial state (when page was firstly received?)

我通過一些js庫操作了網頁DOM,這些庫改變了onMouseup onMousedownonMousemove的行為,但我不確定。

使用DOM檢查器,我可以看到其中一些更改被設置為主要 “文檔”對象的屬性。

因此,我試圖找出的是一種存儲方法,該方法是在頁面加載時存儲“文檔”對象的初始狀態(或者可能存儲整個DOM?),以便以后可以恢復它。

我對此的幼稚嘗試:

var initial_state = document
document = initial_state

你猜怎么了? 它沒有用...所以...我需要知道什么,我該怎么做呢?

更新 :我現在知道java賦值是通過引用而不是通過值,所以現在我正在嘗試.extend(),但是這個問題的重點是無論如何,無論如何,我將能夠將DOM的完整狀態保存在其初始階段(收到頁面時),然后再次進行恢復。 完整狀態是指html,javascript狀態,對象屬性和方法,以便在還原它時,DOM與您第一次收到的DOM完全相同。

我知道這可能很困難,並且可能需要與javascript代碼狀態的復雜度成正比的特定案例代碼 但這會有所幫助,如果能在最簡單的情況下(至少在我的問題示例中,您收到一些html以及一些發生變化的js代碼)能看到至少一個以正確的方式完成此操作的代碼示例,我將非常感激整個文檔的onMousedown的默認值)。

因為JavaScript的工作方式(不復制對象,而是通過引用傳遞對象),所以initial_state var剛剛存儲了對DOM文檔的引用。 當DOM文檔更新時,您的initial_state var將反映這些更改,因為它只是指向DOM文檔的引用,而不是“獨立的”對象。

要獲得對象的副本,該對象是“真實”對象,而不僅僅是對第一個對象的引用,您需要clone

如果您使用jQuery,則可以使用擴展功能進行克隆

// for simple cloning
var initDoc = $.extend({}, document);

// for deep cloning
var initDocument = $.extend(true, {}, document);

如果您對使用jQuery.extend()不感興趣,請查看有關在JavaScript中克隆對象的相關問題。

如何正確克隆JavaScript對象?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM