2010-03-22 53 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