2009-04-20 10 views
14

Supponiamo che io ho alcune schede (tab ad esempio jQuery) e voglio caricare dinamicamente qualche pagina in ogni scheda, posso farlo in due modiiframe vs Ajax

  1. schede utilizzare jQuery Ajax (in pratica il riempimento div con dati Ajax) o
  2. Ogni scheda può contenere un iframe e una pagina caricata in tale scheda.

Q1. Non vedo differenze tra due approcci all'utente, c'è?

Q2. Penso che la modalità iframe sia migliore perché iframe può caricare qualsiasi pagina, ma a volte caricare dati ajax in div potrebbe non funzionare come previsto.

+1

Buona domanda .. –

risposta

6

Per uno, avere un errore in una pagina inclusa (o una chiamata Ajax) è probabilmente meglio gestirlo con l'approccio ajax. Con iframe avrai solo un brutto errore 404 o 500 nel mezzo della tua pagina. Ma con ajax è possibile rilevare l'errore e visualizzare un messaggio di errore più user-friendly.

Dipende anche da quali dati si sta caricando nella tua pagina. Se controlli il codice HTML in fase di caricamento, puoi evitare o correggere eventuali problemi di visualizzazione che potrebbero verificarsi. Se è necessario caricare una pagina al di fuori del proprio controllo, gli iframe sarebbero i migliori (o necessari).

Ci possono essere anche problemi di accessibilità coinvolti con entrambi gli approcci, ma non sono abbastanza con quella familiare per determinare quale approccio funziona meglio con gli screen reader, ecc

1

Se le pagine sono il contenuto, e si può controlla i fogli di stile e ogni cosa a cui acceda ciascuno ... poi vai con l'opzione numero uno. Puoi progettare le cose in modo da non dover recuperare i contenuti condivisi più di una volta.

Se le pagine non sono sotto il vostro controllo (siti esterni, ecc.), Caricatele su iFrame. Non dovrai preoccuparti del corretto rendering delle pagine, ecc.

0

Con iframe, potresti incorrere in problemi con la barra di scorrimento se il contenuto viene caricato da un sito esterno e la larghezza e l'altezza non sono note in anticipo. Con la manipolazione di ajax e DOM, non avrai questo problema.

Questa è la sola ragione per cui ho scaricato iFrame in un caso particolare. La soluzione molto hacky per riportare la larghezza e l'altezza da un sito remoto che viene caricato in un iframe, non merita semplicemente la pena.

+0

Cosa succede se smoeone conosce l'altezza e la larghezza dell'iframe –

0

Miscelando sia iframe che ajax, se la pagina di caricamento (la pagina che iframe tenta di caricare) non risponde immediatamente in modo tale da produrre un blocco bianco vuoto, iframe potrebbe bloccare altre richieste di ajax nella maggior parte dei browser a causa del rendering.

D'altra parte, iframe è più potente, si possono avere cornici di stack soprattutto con lo sfondo trasparente, senza preoccuparsi della sua larghezza o altezze, e apparirà esattamente come la stessa pagina senza frame.

0

Fare attenzione a dove si trova il contenuto sorgente. Se è nel tuo dominio, puoi utilizzare iframe o chiamate Ajax. Ma se si trova in un dominio diverso non è possibile utilizzare ajax a causa della sua protezione "cross-site-scripting".

Penso che sia l'aspetto principale nella scelta tra iframe e chiamate ajax.

+0

C'è un modo per aggirare questo usando Access-Control-Allow-Origin per esempio in Java si può impostare: 'response.addHeader (" Access-Control-Allow-Origin " , "*"); '. – Ithar

+1

@Ithar: È vero. Ma supponiamo che tu abbia il controllo sul codice lato server che fornisce il contenuto alla tua scheda. –