Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fanxybox ajax弹出窗口-完整HTML还是仅内容?_Ajax_Popup_Fancybox - Fatal编程技术网

Fanxybox ajax弹出窗口-完整HTML还是仅内容?

Fanxybox ajax弹出窗口-完整HTML还是仅内容?,ajax,popup,fancybox,Ajax,Popup,Fancybox,我已经创建了一个网站,它使用Fancybox为ajax弹出窗口(主要是表单)提供支持。这些弹出窗口的内容是从PHP文件加载的。一切正常 我的实际问题是:Fancybox弹出页面是否应该包含 A) 完整HTML(包含doctype、head、css等),或 B) 只是表单的HTML,类似于Fancybox的内联版本。Fancybox文档在其示例中使用了这一点 我已经用这两种方法进行了测试,它们都有效,但有一些细微的差别: datepicker仅在弹出窗口中初始化时工作 css文件在弹出窗口中可在

我已经创建了一个网站,它使用Fancybox为ajax弹出窗口(主要是表单)提供支持。这些弹出窗口的内容是从PHP文件加载的。一切正常

我的实际问题是:Fancybox弹出页面是否应该包含

A) 完整HTML(包含doctype、head、css等),或

B) 只是表单的HTML,类似于Fancybox的内联版本。Fancybox文档在其示例中使用了这一点

我已经用这两种方法进行了测试,它们都有效,但有一些细微的差别:

  • 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
,但这是一个有很多答案的问题,由您决定什么是最好的