iframe Ajax transport

Acest transport - probabil cel mai versatil și puternic, dar, de asemenea, subtilitățile de ea - mai mult decât oricine altcineva

invizibil IFrame este creat pentru comunicarea cu serverul. O simplă schimbare a URL-ul iframe - o cerere pentru date către server. În plus, iframe poate fi trimis post-interogări
pune numele atributului form.target.

Ca o regulă, iframe - unul, și cere-l să meargă pe scenă. Puteți face mai mult ifreymov pentru a trimite mai multe cereri simultan.
Cu toate acestea, în cazul în care mai mult de două - va trebui să facă pe diferite subdomenii. Acest lucru - în secțiunea Comunicarea cu domenii diferite pentru documente.

  • Utilizatorii pot trimite fișiere de pe disc: formularul POST în iframe.
  • Sunetul „clic“ atunci când trecerea cerere în iFrame
  • Modificări în istoria browser-ului, care afectează istoricul de navigare și / sau butoanele de back-forward. Tranzițiile de pe URL-ul oficial nu ar trebui să se reflecte în istorie.
  • Bara de progres sau cursorul de ceas atunci când vi se solicită în iframe. Cererile trebuie să fie caracteristici transparente sunt invizibile pentru vizitator.

Și acum - să pună în aplicare și de caracteristicile sale, inclusiv în depășirea problemelor descrise mai sus!

Ce este un iframe? La această întrebare browser-două răspunsuri

Când vorbim despre transferul către noua adresă URL iframe - înseamnă „fereastra“. Când vom să-l creeze și să împingă în DOM - desigur, „tag-ul“.

Pagini din iframe poate fi trecut la fereastra părinte prin window.parent, iar în cazul în care politica de permise de aceeași origine, chiar și apelați funcția / pentru a obține eticheta iframe.

Pentru post - cere doar în formă de atribut forma form.target = 'ifreyma numele și pot cauza form.submit (). În acest fel puteți trimite fișiere la server, și, în general,
toate acestea pot conține o formă de HTML.

Serverul primește cererea și generează ca răspuns la pagina, care transmite de obicei rezultatul la fereastra principală prin intermediul kallbek cu funcție specială.
În exemple, această funcție va apărea mai târziu, atunci când se analizează ifreymov invizibil.


Pentru browser-ul iframe - aceeași casetă ca principal. Prin urmare, tranziția la URL-uri diferite ar trebui să intre în istorie brauzit înainte și înapoi este posibilă prin partea din spate / înainte.
De exemplu, aici:

Aveți posibilitatea să copiați link-ul de la exemplul și pozahodit-l în diferite browsere. Clicurile pe butoanele sus și jos nu sunt reflectate în poveștile, deși
schimbarea paginii în interiorul unui cadru. Cu toate acestea, încă declic în IE. Solicitările la server trebuie să fie un fel de invizibil, așa că trebuie să scap de ea.

Rezultatele testelor depind de browser-ul, sistemul de operare, etc. De obicei, se întâmplă că, în timpul istoriei POST este contaminat, în timp ce GET - nr.

Crearea ifreym - la fel de ușor ca și orice alt element. Poate doar o configurare - proprietate numele IE trebuie în mod necesar să fie setat la crearea elementului.
Adică, nu poți face mai întâi iframe. și apoi atribuiți un nume (aceeași pentru intrare, etc) - vor exista probleme. Prin urmare, este necesar să se facă verificări separate, pentru isIE.

Dacă parametrul nu este specificat de depanare. apoi, după crearea ifreym făcut invizibil.

ifreyma crearea dinamica are două obiective:

  1. Noi facem HTML curat
  2. Dinamic ifreym - o altă măsură împotriva contaminării istoriei

Sunteți liber pentru a testa efectul dinamic generarea de sunet de clic în IE și butoanele de back-forward.

Următorul exemplu funcționează numai în IE. Se creează un invizibil iframe, atunci când vi se solicită, prin care nu clic niciun indicator Histori sau încărcare suplimentară.

Dacă sunteți în IE, este posibil să observați că tranzițiile de pe acest ifreymu complet invizibil pentru utilizator. Ideal, și numai. Acesta este creat cu ajutorul
prost documentate, dar caracteristicile de securitate ActiveX. Opțiuni Nu browser speciale includ nu este necesar pentru aceasta.

După cum se poate observa din exemplul, pentru a izola ifreyma creat ActiveX documentul provizoriu. Prin urmare, operațiunile de pe ifreymom și care nu sunt vizibile din okna.Zdes sol obținute fereastra respectivă două obiecte nu este, ca de obicei (+ ifreym primară) și trei:

  1. fereastră fereastra principală
  2. fereastra documentului HTMLFile - disponibil ca IEFrameDocument.parentWindow
  3. Fereastra ifreyma - disponibil ca IEFrameNode.contentWindow. sau folosind getIframeDocument

Variabilele globale IEFrameNode. IEFrameDocument ne oferă acces direct din fereastra principală la fereastra 2 și 3. Deci, pe care le puteți trimite cu ușurință o cerere la provocarea de server

Dar ce urmează? Documentul de la server, probabil, va dori să se întoarcă la fereastra principală. De exemplu, numesc handleMessage) funcția (cu un anumit mesaj.

Pentru a obține un astfel de acces, este necesar ca în prealabil a ferestrei principale, se întind link-ul de fereastra HTMLFile din fereastra principală:

Schimbul de date este ilustrat mai jos:

Dacă decideți să utilizați această abordare - permiteți-mi să vă salvați posibile ore de săpat în debugger. Înainte de faptul că a discutat metoda GET.
Este link-uri suficiente pentru iframe.

Pe de altă parte, în metoda POST, trebuie să form.target alocați nu numele ifereym și ifreyma, iar acest ifreym ar trebui să fie vizibilă în fereastra curentă.

Este ușor de verificat că un simplu post în cadrul „frame3“ (în acest exemplu) va avea nici un efect, deoarece rama nu este vizibil.

Pentru a vedea forma ifreym, este necesar să se creeze în aceeași fereastră. Este posibil să se facă o mulțime de moduri. De exemplu, adăugați script-urile necesare HTMLFile:

Și declanșa o forma dorită a ferestrei:

Toate principal, sper, în textul acolo. Dacă aveți un interes mai profund - o plăcută săpat în debugger.

Metoda descrisă oferă realizarea perfectă a iframe de transport, care, din păcate, funcționează numai în IE. Pentru alte browsere, puteți utiliza fie un normale iframe-transport sau alte transporturi.

Un exemplu de bază de utilizare iframe pentru COMET C folosind GET, puteți descărca.

  • versiune printabilă

Asta e problema. Nicăieri nu pot găsi răspunsul. Dacă utilizați ayfreym link către site-ul altcuiva. In ayfreym pagina este încărcată din colțul din stânga sus. Și, uneori, trebuie să caseta încărcate de la mijlocul sau după liniuța 100 de pixeli din partea de sus, sau ceea ce este adevărat introduce testul de căutare ayfrem care își găsește locația dorită de model pe pagină și sarcina de la el. Sarcina mi se părea la început să script de căutare vstvit elementar în fereastră și conduce în loc de o constantă variabilă, dar din anumite motive nu sa întâmplat nimic.

În acest sens, am făcut un program, dar. Acesta funcționează jumătate. Cine podskazhet- de ce și cum să facă mai bine?

făcut:
1) Primul scenariu prin document.getElementById ( „a1“). InnerHTML ia „diverse“ și atrage formele


și în al doilea rând
în cazul în care "diferit-2" = F ( "Diverse" + KB) - totul este OK

2) Al doilea script prin document.getElementById ( 'Textar'). InnerHTML ia "diferit-2" - totul este OK -> pe php devine "Alte 2", și un al doilea fout1 umplut răspuns "bla-bla-bla"

3) Al treilea scenariu încearcă:
var str1 = document.getElementById ( 'a3'). innerHTML
var str1 = document.getElementById ( 'a3'). Valoarea (nonsens, ci încearcă)
var str1 = document.getElementById ( 'fout1'). innerHTML
și colab.
- El a încercat din vykovyrnut de fout1 "-bla bla-bla" 10 secunde după post. dar nu se întâmplă nimic. Ce eroare?

Cum altfel se poate pune în aplicare un var str1 = funcție. (Răspuns de la PHP pe post de interogare), sau knock-out în PHP rezultat Java funcție la anchetă „Altele 2“ pe protocolul post-(sau în alt mod (cum?). Există un exemplu de lucru?