2011-01-27 80 views
0

當我們寫當我們編寫window.open()時究竟發生了什麼?

window.open(url,target,..) 

一個新窗口中打開..誰能告訴我這是怎麼發生的內部

+2

您能更具體嗎?我的意思是,答案是:瀏覽器打開一個窗口。但是,我懷疑你想要更多... :-) – 2011-01-27 13:00:51

+0

當你雙擊瀏覽器圖標時,同樣的事情發生,但是window.open()通過參數傳入瀏覽器窗口 – 2011-01-27 13:01:04

+0

在你調用window.open之前放置調試器。嘗試調試 – 2011-01-27 13:03:25

回答

2

這裏的一切我能想到的:

  1. 瀏覽器決定是否根據其彈出的設置您的open請求(大多數瀏覽器會忽略調用open不在直接響應忽視到用戶事件,如點擊)。假設它允許:
  2. 瀏覽器創建一個新窗口。它可能會或可能不會選擇在新選項卡中創建該窗口,並且它可能會或可能不會注意您所請求的尺寸和設置(如果您已經請求了一些)。
  3. 瀏覽器設置新窗口的opener屬性,使其指向發出open調用的窗口的window對象。
  4. 瀏覽器開始將所需資源加載到新窗口中(如果您提供了要加載的資源)。
  5. window.open調用返回對新的window對象的引用。

請注意,窗口之間的引用是相關的window對象的「外部」方面,它不一定與實際窗口對象相同。 (奇怪,但是真的;這是爲了安全;更多是在this other StackOverflow question。)所以可能是,雖然你打開了一個窗口,但你不能訪問該窗口的內容,因爲它來自不同的原點

關於內部結構關於瀏覽器實際上是如何實現它的,這完全取決於瀏覽器的實現。對於Firefox和Chrome等開源瀏覽器,您可以通過查看源代碼找到...

0

瀏覽器創建一個新的窗口,設置名稱,尺寸,位置,選項等,然後將URL加載到其中。你是這個意思嗎?

相關問題