2010-03-22 38 views
0

我有一個關於基於CSS的彈出窗口的問題,就像那些由jQuery UI的對話系統或Colorbox生成的問題。如果我使用這些(或類似的東西)打開一個彈出窗口到一個HTML頁面,並且該頁面中有Javascript,彈出窗口中的Javascript運行在它自己的上下文中,還是它成爲上下文的一部分在打開它的父窗口中的JavaScript?我問,所以我可以在這兩個頁面(父和彈出)上寫Javascript,所以沒有命名空間衝突。Javascript和CSS Popups

在此先感謝! Doug

回答

1

這取決於彈出的類型。 (我假設我們正在討論頁面內彈出窗口,而不是window.open(),它們打開了一個新的瀏覽器窗口。)

如果它包含一個IFRAME,在其中加載一個單獨的頁面,那麼該頁面將擁有自己的頁面樣式。您將不得不重新加載您需要的任何CSS和JavaScript文件。

如果它不包含IFRAME,而只是通過AJAX加載內容的常規DIV或其他元素(或直接輸出到「父」HTML頁面),則彈出窗口將在父頁面。

+0

你有我在說的,這將是在頁面彈出窗口,而不是一個windows.open()風格。由於我使用Colorbox打開彈出窗口,並將iFrame設置爲true,所以聽起來像是使彈出窗口中的Javascript運行在它自己的上下文中。 謝謝! – 2010-03-22 17:27:54

+0

@writes_on通過右鍵單擊Firefox中的彈出窗口內容,可以很容易地找到它。如果你得到一個菜單項說「這個框架」,那麼你在一個IFrame。 – 2010-03-22 17:46:08

1

如果你使用真正的彈出窗口(新窗口),它是在它自己的上下文中definitly。

如果純粹在HTML中使用模態窗口,它取決於。它可以是iframe(自己的上下文)或注入的元素(父上下文)。

1

使用Colorbox,您可以將iframe屬性設置爲true,並將其加載到iframe中。這給了頁面自己的範圍。如果您不使用iframe,則該頁面將在當前文檔的上下文中加載。

$('a.someLink').colorbox({ href:"somePage.html", iframe: true }); 
+0

這正是我正在做的,從你的意思來說,這就像有一個完全獨立的頁面(有點像window.open()會提供)。這意味着我的彈出JavaScript將在其自己的上下文中運行。 謝謝! – 2010-03-22 17:28:58