iframes vs ajax [closed]

2019-01-17 08:36发布

问题:

Suppose i have some tabs (e.g. jquery tab) and I want to dynamically load some page in each tab, I can do that in two ways

  1. Use jquery ajax tabs (basically filling div with ajax data) or
  2. Each tab can contain an iframe and page loaded into that.

Q1. I see no difference between two approaches to user, is there?

Q2. I think iframe way is better because iframe can load any page but sometimes loading ajax data into div may not work as expected.

回答1:

For one, having an error in an included page (or ajax call) is probably better to handle with the ajax approach. With iframes you'll just get an ugly 404 or 500 error in the middle of your page. But with ajax you can detect the error and display a more user-friendly error message.

It also depends on what data you're loading into your page. If you control the html being loaded in, you can avoid or fix any display issues that may arise. If you need to load a page outside of your control, iframes would be best (or necessary).

There may also be accessibility issues involved with either approach, but I'm not familiar enough with that to determine which approach works best with screen readers, etc.



回答2:

If the pages are your content, and you can control the stylesheets and everything being accessed by each one...then go with option number one. You can engineer things so you don't have to retrieve shared content more than once.

If the pages are out of your control (external sites, etc.), then load them up in iFrames. You won't have to worry about the pages rendering properly, etc.



回答3:

With iframes, you may run into scrollbar issues if the content is loaded from an external site and the width and height is not known in advance. With ajax and DOM manipulation, you won't have this issue.

This is THE single reason why I dumped iFrames in a particular case. The very hacky solution to reporting the width and height from a remote site being loaded in an iframe, was simply not worth the trouble.



回答4:

By mixing both iframe and ajax, if your loading page (the page iframe tries to load) is not responding back immediately such that an empty white block was produced, iframe could halt other ajax requests in most browsers due to rendering.

On the other hands, iframe is more powerful, you could have stack frames especially with the transparent background, and not worrying about its width or heights, and it will appear exact like the same page without frames.



回答5:

Be aware to where is your source content. If it is in your domain, you could use either iframes or ajax calls. But if it is in a different domain you couldn't use ajax due its "cross-site-scripting" protection.

I think that's the principal aspect on choice between iframes and ajax calls.



标签: ajax iframe