iframes vs ajax

时间:2009-04-20 13:22:16

标签: ajax iframe

假设我有一些标签(例如jquery标签),我想在每个标签中动态加载一些页面,我可以用两种方式做到这一点

  1. 使用jquery ajax标签(基本上用ajax数据填充div) 或
  2. 每个标签页都可以包含iframe和页面。
  3. Q1 即可。我看到两种用户方法没有区别,是吗?

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

5 个答案:

答案 0 :(得分:6)

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

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

这两种方法都可能存在可访问性问题,但我对此并不熟悉,以确定哪种方法最适合屏幕阅读器等。

答案 1 :(得分:1)

如果页面是您的内容,您可以控制样式表和每个页面访问的所有内容...然后选择第一个选项。您可以设计工具,这样您就不必多次检索共享内容。

如果页面不受您控制(外部网站等),请在iFrame中加载它们。您不必担心页面呈现正确等等。

答案 2 :(得分:0)

使用iframe,如果从外部网站加载内容并且事先不知道宽度和高度,则可能会遇到滚动条问题。使用ajax和DOM操作,您将不会遇到此问题。

这是我在特定情况下转储iFrame的唯一原因。从iframe中加载的远程站点报告宽度和高度的非常棘手的解决方案根本不值得。

答案 3 :(得分:0)

通过混合iframe和ajax,如果您的加载页面(页面iframe尝试加载)没有立即回复,从而产生空白块,iframe可能会因渲染而停止大多数浏览器中的其他ajax请求。 / p>

另一方面,iframe功能更强大,你可以拥有堆叠帧,特别是透明背景,不用担心它的宽度或高度,它看起来就像没有帧的同一页面一样。

答案 4 :(得分:0)

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

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