2017-07-27 53 views
-1

我注意到一些網站在最初加載它們時沒有更新它們的DOM。例如,如果您訪問YouTube並點擊視頻或訪問Google Play並點擊某個應用,如果您閱讀了名稱爲「description」的DOM元元素,則會獲得該網站的一般說明。但是,如果刷新頁面,則說明會更新自己,以更詳細地描述正在查看的特定項目。如果您查看頁面的源代碼,您也可以獲得更新,但這似乎相當於進行刷新。爲什麼DOM只在刷新時更新

我覺得這個有問題,因爲我的應用程序需要提取頁面的描述,但是這些描述在刷新完成之前不會顯示真實的描述。我當然不會刷新用戶的頁面來獲取這些信息。

我不明白爲什麼YouTube或Google Play會這樣做。這是Chrome的一部分(我正在使用)或者是由一些JavaScript完成的更新,但設法繞過DOM?

+0

但是這並不能解釋爲什麼DOM在使用Ajax檢索類似描述的東西時不更新。它看起來似乎是JavaScript負責更新元標記的「內容」屬性,顯然這些網站不這樣做。 – AndroidDev

回答

1

想必他們正在使用Ajax和History API來更新頁面內容並更改顯示的URL而不執行新頁面的全部加載。有效地將網站作爲單頁應用程序運行。

不幸的是,它也聽起來像他們沒有更新所有的頁面,並且正在離開你關心的元素元素(原因可能是因爲很少有人關心它們,它們主要是爲了機器人而存在的) 。

由於數據尚未發送到瀏覽器,因此如果沒有發送HTTP請求來獲取數據,您將無法獲取數據。

+0

我想我假定Chrome即使在進行Ajax調用時也會自動更新它的DOM。這似乎並非如此。 – AndroidDev

+0

@AndroidDev - 它將DOM更新爲JavaScript程序員應該更新它的任何內容。正如答案中提到的那樣,程序員可能不會更新元素。 – Quentin