Php 设计容器页面

Php 设计容器页面,php,html,Php,Html,以下想法是否存在潜在缺陷: …我想要一个容器页面index.php。标题和大纲将是不变的,但在中间,我想要一个大的面板,它从外部PHP文件加载内容,每个“幻灯片”一个。当用户单击链接时,中心div将更新为新内容,外部边缘将保持不变 我是否能够在设置中正确使用会话变量等。我意识到这肯定会打破浏览器的历史,但除了一些可能的UI问题之外,还有任何技术障碍。正如Jared所说,这是一件常见的事情。会话变量始终可以通过ajax或框架使用,因此它不会影响其中的任何内容,如果您希望继续使用浏览器历史记录,加载

以下想法是否存在潜在缺陷:

…我想要一个容器页面index.php。标题和大纲将是不变的,但在中间,我想要一个大的面板,它从外部PHP文件加载内容,每个“幻灯片”一个。当用户单击链接时,中心div将更新为新内容,外部边缘将保持不变


我是否能够在设置中正确使用会话变量等。我意识到这肯定会打破浏览器的历史,但除了一些可能的UI问题之外,还有任何技术障碍。

正如Jared所说,这是一件常见的事情。会话变量始终可以通过ajax或框架使用,因此它不会影响其中的任何内容,如果您希望继续使用浏览器历史记录,加载新内容时,您可以随时更改location.hash,以便在有人使用后退或前进按钮时,可以使用一些javascript加载以前呈现的内容。

正如Jared所述,这是一件常见的事情。会话变量始终可以通过ajax或框架使用,因此它不会影响其中的任何内容,如果您希望继续使用浏览器历史记录,加载新内容时,您可以随时更改location.hash,以便在有人使用后退或前进按钮时,可以使用一些javascript加载以前呈现的内容。

会话不应丢失

浏览器历史记录也不需要丢失-请阅读
onPopState
(和
history.pushState
)和
onHashChange
JS事件。AJAX密集型站点可以通过这种方式确定要加载的内容

其中一个缺陷是,如果您使用大量的JS,则需要重新附加新加载内容的事件,但也可以从未替换的容器中委派这些事件


jQuery的
.load()
函数可能对您的入门也很有用。

会话不应丢失

浏览器历史记录也不需要丢失-请阅读
onPopState
(和
history.pushState
)和
onHashChange
JS事件。AJAX密集型站点可以通过这种方式确定要加载的内容

其中一个缺陷是,如果您使用大量的JS,则需要重新附加新加载内容的事件,但也可以从未替换的容器中委派这些事件


jQuery的
.load()
函数可能对您的入门也很有用。

人们总是使用
iframes
frames
和AJAX加载的内容来实现这一点。您不必担心打破历史记录。有很多解决方案。看看,例如。此外,如果使用会话,会话将继续工作,尽管您可能必须适应会话过期的情况(例如,如果需要登录才能查看您的内容)。顺便问一下,是否有人知道这种技术是否有一个常用的名称,以便我可以更轻松地继续在谷歌上搜索它。这个想法很难解释。我还想知道是否有jQuery库可以帮助它?@Patrick:“Web开发”。Jared已经列出了实现这一功能所涉及的三种主要技术(一次只能使用一种)。人们总是使用
iframes
frames
、以及AJAX加载的内容来实现这一点。你不必担心打破历史。有很多解决方案。看看,例如。此外,如果使用会话,会话将继续工作,尽管您可能必须适应会话过期的情况(例如,如果需要登录才能查看您的内容)。顺便问一下,是否有人知道这种技术是否有一个常用的名称,以便我可以更轻松地继续在谷歌上搜索它。这个想法很难解释。我还想知道是否有jQuery库可以帮助它?@Patrick:“Web开发”。Jared已经列出了实现此功能所涉及的三种主要技术(一次只能一种)。诚然,如果您使用jQuery,您也可以使用
。live()
,这样您就不必重新附加事件:)@Trey
。live()
实际上正在做我所说的委派事件的工作,只是我更愿意建议使用
。delegate()
.live()
更有效,也更整洁。你能解释一下“委托”是什么意思吗。我想知道JS是否真的是我最大的问题。如果每张“幻灯片”都有自己的JS文件,我怎么能用正确的脚本保存每张幻灯片?@Patrick Beardmore:我不会使用单独的文件,我宁愿将单个文件中的代码逻辑地分开,例如,根据加载的页面将其初始化为类。是的,JS可能是你的问题之一,因为内容会改变,事件可以被删除、替换、累积等等——想想JS吧。我的意思是使用
.delegate()
函数,就像它们的函数一样-只要不替换或删除容器,就不需要在容器中重新附加事件。我说得够清楚了吗?没错,如果你使用jQuery,你也可以使用
.live()
,这样你就不必重新附加事件:)@Trey
.live()
实际上是在做我所说的委派事件,只是我更愿意建议使用
.delegate()
而不是
.live()
因为它似乎更高效、更整洁。您能解释一下“委托”是什么意思吗。我想知道JS是否真的是我最大的问题。如果每张“幻灯片”都有自己的JS文件,我怎么能用正确的脚本保存每张幻灯片?@Patrick Beardmore:我不会使用单独的文件,我宁愿将单个文件中的代码逻辑地分开,例如,根据加载的页面将其初始化为类。是的,JS可能是你的问题之一,因为内容会发生变化,事件可以被删除、替换、累积等等