我有一个关于基于 CSS 的弹出窗口的问题,例如由 jQuery UI 的对话框系统或 Colorbox 生成的弹出窗口。如果我使用这些(或类似的东西)打开一个 HTML 页面的弹出窗口并且该页面中包含 Javascript,那么弹出窗口中的 Javascript 是在其自己的上下文中运行,还是成为Javascript 在打开它的父窗口中?我要求我可以在两个页面(父页面和弹出窗口)上编写 Javascript,这样就不会发生命名空间冲突。
提前致谢!道格
我有一个关于基于 CSS 的弹出窗口的问题,例如由 jQuery UI 的对话框系统或 Colorbox 生成的弹出窗口。如果我使用这些(或类似的东西)打开一个 HTML 页面的弹出窗口并且该页面中包含 Javascript,那么弹出窗口中的 Javascript 是在其自己的上下文中运行,还是成为Javascript 在打开它的父窗口中?我要求我可以在两个页面(父页面和弹出窗口)上编写 Javascript,这样就不会发生命名空间冲突。
提前致谢!道格
这取决于弹出窗口的类型。(我假设我们在这里讨论的是页内弹出窗口,而不是window.open()
打开新浏览器窗口的弹出窗口。)
如果它包含一个 IFRAME,您可以在其中加载一个单独的页面,那么该页面将有自己的样式。您必须重新加载所需的任何 CSS 和 JavaScript 文件。
如果它不包含 IFRAME,而只是一个常规的 DIV 或其他通过 AJAX 加载内容的元素(或直接在“父”HTML 页面中输出),则弹出窗口将在父页面的上下文中运行。
如果您使用真正的弹出窗口(新窗口),它肯定是在它自己的上下文中。
如果您纯粹在 HTML 中使用模态窗口,这取决于。它可以是 iframe(自己的上下文)或注入的元素(父上下文)。
使用 Colorbox,您可以将 iframe 属性设置为 true,它将在 iframe 中加载内容。这为页面提供了自己的范围。如果您不使用 iframe,则页面将在当前文档的上下文中加载。
$('a.someLink').colorbox({ href:"somePage.html", iframe: true });