我创建了一个网站,它使用Fancybox为ajax弹出窗口(主要是表单)。这些弹出窗口的内容是从PHP文件中加载的。一切都很好。
我的实际问题是: Fancybox弹出页面是否包含
( A)完整的HTML (包含doctype、head、css等),或
B)只是表单的HTML,类似于Fancybox的内联版本。Fancybox文档在它们的示例中使用了这一点。
我对这两种方法都进行了测试,它们都能发挥作用,但有一些细微的差别:
这就是为什么我倾向于选择一个选项,但我在这里遗漏了什么吗?我没有考虑这些问题吗?我不想使用内联版本,因为一个页面上有很多表单,而且一次使用的很少。
发布于 2015-03-24 16:51:59
您应该考虑到一些细微的差异:
1)。当您通过ajax加载内容时,内容将成为当前文档的一部分,并且加载该内容的(父)页面的CSS和JS设置将影响ajaxed元素。
换句话说,任何(CSS和JS)功能(理想情况下)都需要在父页面(使用委托形式)中初始化,或者在fancybox回调(afterShow for fancybox v2.x)中初始化它们。
在这种情况下,返回的内容(来自php文件)不需要完整的结构(DOCTYPE、<head>、<link>或<script>标记),而需要内容主体的HTML元素。
的底线:父页面和ajax内容成为一个单一的文档(尽管在关闭fancybox之后将从DOM中删除ajax元素)
备注:ajaxed页面中的元素可能会影响父页面中的元素或与其发生冲突。
2)。另一方面,您可以有一个独立的、功能齐全的页面(DOCTYPE、<head>、<link>或<script>标记等)。具有自己的CSS和JS功能。
此页面可以通过iframe模式加载到fancybox中,其DOM元素不会受到父页的CSS和JS设置的影响(父页中的元素也不会受到iframed页面中的元素的影响)
底线:不管视图如何,父页面和iframe内容都是两个分开的文档。
你需要用什么?
如果您不喜欢在父页面中加载和初始化许多脚本,那么您可能希望使用iframe,但是这是一个有许多答案的问题,应该由您来决定什么是最好的。
https://stackoverflow.com/questions/29230183
复制相似问题