iframes vs ajax

iframes vs ajax,ajax,iframe,Ajax,Iframe,假设我有一些选项卡(例如jquery选项卡),并且我想在每个选项卡中动态加载一些页面,我可以通过两种方式来实现 使用jqueryajax选项卡(基本上用ajax数据填充div) 或 每个选项卡都可以包含一个iframe和加载到其中的页面 Q1。我认为这两种方法对用户来说没有区别,是吗 Q2。我认为iframe方式更好,因为iframe可以加载任何页面,但有时将ajax数据加载到div中可能无法按预期工作。首先,在包含的页面(或ajax调用)中出现错误可能更好地用ajax方法处理。用iFrAMS,

假设我有一些选项卡(例如jquery选项卡),并且我想在每个选项卡中动态加载一些页面,我可以通过两种方式来实现

  • 使用jqueryajax选项卡(基本上用ajax数据填充div) 或
  • 每个选项卡都可以包含一个iframe和加载到其中的页面
  • Q1。我认为这两种方法对用户来说没有区别,是吗


    Q2。我认为iframe方式更好,因为iframe可以加载任何页面,但有时将ajax数据加载到div中可能无法按预期工作。

    首先,在包含的页面(或ajax调用)中出现错误可能更好地用ajax方法处理。用iFrAMS,你只会在页面中间得到一个丑陋的404或500个错误。但是使用ajax,您可以检测错误并显示更用户友好的错误消息

    这还取决于您正在加载到页面中的数据。如果控制加载的html,则可以避免或修复可能出现的任何显示问题。如果需要加载超出控制范围的页面,最好(或必要)使用iframe


    这两种方法都可能涉及可访问性问题,但我不太熟悉,无法确定哪种方法最适合屏幕阅读器等。

    如果页面是您的内容,并且您可以控制样式表和每个人访问的所有内容……那么选择第一个选项。您可以设计一些东西,这样就不必多次检索共享内容


    如果页面不受您的控制(外部站点等),则将其加载到iFrame中。您不必担心页面是否正确呈现等问题。

    使用iFrame,如果内容是从外部站点加载的,并且事先不知道宽度和高度,则可能会遇到滚动条问题。使用ajax和DOM操作,您就不会有这个问题


    这是我在特定情况下丢弃iframe的唯一原因。报告在iframe中加载的远程站点的宽度和高度的非常老套的解决方案根本不值得麻烦。

    如果加载页面(iframe尝试加载的页面)没有立即响应,从而产生一个空的白色块,由于渲染的原因,iframe可以在大多数浏览器中停止其他ajax请求


    另一方面,iframe功能更强大,您可以使用堆栈框架,尤其是透明背景,而不必担心其宽度或高度,并且它将与没有框架的同一页面完全相同。

    请注意您的源内容在哪里。如果它在您的域中,您可以使用iframe或ajax调用。但是,如果它位于不同的域中,由于ajax的“跨站点脚本”保护,您就不能使用它


    我认为这是在iframe和ajax调用之间进行选择的主要方面。

    如果Smoone知道iframe的高度和宽度,有一种方法可以通过使用访问控制允许原点来解决这个问题,例如在Java中,可以设置:
    response.addHeader(“访问控制允许原点”,“*”)@Ithar:没错。但是,假设您可以控制向选项卡提供内容的服务器端代码。