20180208-讀HTML規範

概念

  1. browsing context : 瀏覽器環境,是 展示給用戶的 Document 所在的環境。
    • 瀏覽器的 tab 或者 window 窗口,以及 iframe 和 frameset 中的 frame 都有一個這樣的環境。
    • 每個 browsing context 都有一個對應
    • 的關聯的 WindowProxy 對象。
    • 每個 browsing context 有自己的 session history ,包含了 browsing context 所含有的 Document.
    • browsing context 的 active document 是他的 WindowProxy 的內部 Window 插槽的關聯文檔 associated Document.
    • 如果一個 browsing context 的 session history 中包含了某個 Document ,那麼他就是該 Document 的 browsing context.
  2. WindowProxy : 這是一個包含了 window 對象的特異對象。當 browsing context 被導航時,browsing context 的關聯 windowProxy 所包含的 window 也隨之發生變化
    • 每個 windowProxy 都有一個內部的插槽( [[Window]] internal slot ),用來呈現 window 對象。
    • 一般而言,一個 window 有一個 Document, 但是當在一個窗口中進行了導航時,window 到 document 的映射變爲 1 to many。當 使用了 document.open() 打開了新的 window 後,映射變爲 many to 1.
    • 注意: 根據我的理解,這裏的 Document 並非和某個 html 文件等價。而是作爲其包含對象。也就是說,如果某個 html 文件變了,但是頁面沒有刷新,那麼其包含 Document 對象依然沒有變。
  3. Nested browsing contexts : 一些特定的元素(比如: iframe)能初始化更多的 browsing context, 這些元素被稱爲 browsing context containers
    他們有一個Nested browsing contexts 屬性,其值爲 browsing context 或者 null
  4. Auxiliary browsing contexts : 可以創建一個新的 top-level browsing context (比如通過document.open())。這樣也會隨之創建新的 window 對象.新創建的 window 對象 有一個 opener 屬性,用於指向創建他的 browsing context 的 WindowProxy.
    一般來說,會將新創建的 window 的 opener 屬性設置爲 null, 不然新的 window 中的腳本可以通過 window.opener 取得之前的 window ,並對其做出更改。

屬性

  1. window . top : 返回最頂級的 top-level browsing context 的 WindowProxy 對象
  2. window . parent : 返回當前 browsing context 的 parent browsing context 的 WindowProxy 對象。
  3. window.frameElement : 返回作爲當前頁面的browsing context 的 browsing context container 的 Element. 例如: 某個頁面在 iframe 中打開,則在其中的 js 代碼中使用 window.frameElement,就能獲取到父頁面的 iframe 元素。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章