Fanxybox ajax弹出窗口-完整HTML还是仅内容?
我已经创建了一个网站,它使用Fancybox为ajax弹出窗口(主要是表单)提供支持。这些弹出窗口的内容是从PHP文件加载的。一切正常 我的实际问题是:Fancybox弹出页面是否应该包含 A) 完整HTML(包含doctype、head、css等),或 B) 只是表单的HTML,类似于Fancybox的内联版本。Fancybox文档在其示例中使用了这一点 我已经用这两种方法进行了测试,它们都有效,但有一些细微的差别:Fanxybox ajax弹出窗口-完整HTML还是仅内容?,ajax,popup,fancybox,Ajax,Popup,Fancybox,我已经创建了一个网站,它使用Fancybox为ajax弹出窗口(主要是表单)提供支持。这些弹出窗口的内容是从PHP文件加载的。一切正常 我的实际问题是:Fancybox弹出页面是否应该包含 A) 完整HTML(包含doctype、head、css等),或 B) 只是表单的HTML,类似于Fancybox的内联版本。Fancybox文档在其示例中使用了这一点 我已经用这两种方法进行了测试,它们都有效,但有一些细微的差别: datepicker仅在弹出窗口中初始化时工作 css文件在弹出窗口中可在
- datepicker仅在弹出窗口中初始化时工作
- css文件在弹出窗口中可在两种模式下使用
- 在版本B中很难测试HTML的有效性
- 即使Fancybox因任何原因出现故障,版本A也能正常工作
这就是为什么我倾向于选择a,但我是否遗漏了什么?是我没有考虑的问题吗?我不想使用内联版本,因为页面上有很多表单,而且其中很少有一个是使用的。
您应该考虑微妙的差异:
1) 。通过ajax加载内容时,内容将成为当前文档的一部分,ajaxed元素将受到加载内容的(父)页面的CSS和JS设置的影响 换句话说,您希望从ajaxed内容中获得的任何(CSS和JS)功能(理想情况下)都需要事先在父页面中初始化(使用委托表单)或在fancybox回调中初始化它们(afterShow
对于fancybox v2.x)
在这种情况下,返回的内容(来自php文件)不需要完整的结构(DOCTYPE
、
、
或
标记),而需要内容体的HTML元素
底线:父页面和ajax内容成为一个文档(尽管关闭fancybox后ajaxed元素将从DOM中删除)
注意:ajaxed页面中的元素可能会影响父页面中的元素或与之冲突
2) 。另一方面,您可以拥有一个独立的、功能齐全的页面(DOCTYPE
、
、
或
标记等),并具有自己的CSS和JS功能
此页面可以通过iframe模式加载到fancybox中,其DOM元素不会受到父页面的CSS和JS设置的影响(父页面中的元素也不会受到iframed页面中的元素的影响)
底线:无论视图如何,父页面和iframe内容都是两个独立的文档
你需要用什么
如果您不希望在父页面中加载和初始化许多脚本,您可能希望使用iframe
,但这是一个有很多答案的问题,由您决定什么是最好的