Fancybox ajax popup - 完整的HTML或内容?

时间:2015-03-24 10:28:33

标签: ajax popup fancybox

我创建了一个网站,它使用Fancybox来播放ajax弹出窗口(主要是表单)。这些弹出窗口的内容是从PHP文件加载的。一切都运作良好。

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

A)完整的HTML(包含doctype,head,css-includes等)或

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

我已经对两者进行了测试,但两者都有效,但存在细微差别:

  • datepicker仅在弹出窗口

  • 中初始化时有效
  • css文件可在

  • 的弹出窗口中使用
  • 很难在B版本中测试HTML有效性

  • 版本A即使Fancybox因任何原因发生故障也能正常工作

这就是为什么我倾向于选择a,但我在这里错过了什么?我不考虑的问题是什么?我不想使用内联版本,因为页面上有很多表单,而且一次只使用很少的表单。

1 个答案:

答案 0 :(得分:0)

您应该考虑一些微妙的差异:

1)。当您通过 ajax 加载内容时,内容将成为当前文档的一部分,并且ajaxed元素将受到加载内容的(父)页面的CSS和JS设置的影响。

换句话说,您希望从ajaxed内容(理想情况下)中获得的任何(CSS和JS)功能需要先在父页面中初始化(使用委托的表单)或在其中初始化它们fancybox回调(fancybox v2.x的afterShow

在这种情况下,返回的内容(来自php文件)不需要完整的结构(DOCTYPE<head><link><script>标签)但内容正文的HTML元素。

底线:父页面和ajax内容成为一个单独的文档(虽然关闭fancybox后将从DOM中删除ajaxed元素)

注意:ajaxed页面中的元素可能会影响或与父页面中的元素冲突。

2)。另一方面,您可以拥有一个独立且功能齐全的页面(DOCTYPE<head><link><script>标签等),并拥有自己的CSS和JS功能。

此页面可以通过 iframe 模式加载到fancybox中,并且其DOM元素不会受到父页面的CSS和JS设置的影响(父页面中的元素赢了&# 39;不受iframed页面中元素的影响<)>

底线:无论视图如何,父网页和iframe内容都是两个独立的文档。

  

你需要使用什么?

如果您不想在父页面中加载和初始化许多脚本,则可能需要使用iframe,但这是一个有很多答案的问题,由您决定是什么&#39最好的。