Аякс-транспортна вградена рамка

Това транспорт - може би най-гъвкавият и мощни, но и тънкостите на това - повече от всеки друг

невидим IFrame е създаден за комуникация със сървъра. А просто промяна на адреса на вградената рамка - искане за данните към сървъра. В допълнение, вградената рамка може да се изпрати пощенски заявки
вписване на името му в form.target атрибут.

Като правило, вградена рамка - един, и изисква от него да изляза на сцената. Можете да го направите по-ifreymov да изпрати няколко искания едновременно.
Въпреки това, ако повече от две - ще трябва да се направи по различни поддомейни. Това - в раздела Общуване с различни домейни за документи.

  • Потребителите могат да изпращат файлове от диск: формата POST в вградена рамка.
  • Звукът на "клик" при превключване искане във вградена рамка
  • Промени в историята на браузъра, засягащи хронологията на браузъра и / или обратно-напред бутони. Преходите на официалния URL не трябва да бъдат отразени в историята.
  • Лента за напредъка или гледате курсора, когато бъдете подканени в вградена рамка. Исканията трябва да са прозрачни функции са невидими за посетителя.

И сега - за изпълнение и неговите функции, включително преодоляване на проблемите, описани по-горе!

Какво е вградена рамка? На този въпрос два отговора браузър

Когато говорим за прехвърлянето към новата вградена рамка URL - означава "прозорец". Когато ние ще го създадем и да прокара в DOM - разбира се, "етикет".

Страници от вградената рамка може да бъде предаден до главния прозорец през window.parent и ако политиката на разрешителни и същ произход, дори извика функцията / получите вградена рамка маркер.

За поста - просто питам образна форма атрибут form.target = 'име ifreyma "и да причини form.submit (). По този начин можете да изпращате файлове на сървъра, и като цяло,
всички от които може да съдържа форма на HTML.

Сървърът получава искането и генерира в отговор на страницата, която обикновено се предава резултата в главния прозорец чрез kallbek специалната функция.
В примерите, тази функция ще се появи по-късно, когато се разглежда невидим ifreymov.


За вградена рамка браузър - същото поле, в основните. В съответствие с това той преминава към друг URL трябва да попадат в историята brauzit напред-назад е възможно през задната / напред.
Например, тук:

Можете да копирате линка към примера и да го pozahodit в различни браузъри. Кликне върху бутоните нагоре и надолу, не са отразени в историите, макар че
промяна на страницата вътре в рамката. И все пак все още звучи кликнете на IE. Заявките към сървъра трябва да бъде нещо като невидим, така че трябва да се отървете от него.

Резултатите от тестовете зависят от браузъра, операционна система и т.н. Обикновено се случи, че по време на POST история е замърсена, а GET - не.

Създаване ifreym - толкова лесно, колкото всеки друг елемент. Може би само една настройка - името на собствеността на IE, трябва задължително да се задават при създаването на елемента.
Т.е., не можете да направите първата вградена рамка. и след това да го зададете име (едни и същи за вход и т.н.) - няма да има проблеми. Поради това е необходимо да се направи отделни проверки за isIE.

Ако параметърът не е уточнено за отстраняване на грешки. След това, след като създадете ifreym прави невидим.

Динамично създаване ifreyma има две цели:

  1. Ние правим HTML-чист
  2. Dynamic ifreym - друга мярка срещу замърсяване история

Вие сте свободни да се изследва влиянието на динамичното генериране на звука на щракване в IE и обратно-напред бутони.

Следващият пример работи само в IE. Той създава невидима вградената рамка, когато бъдете подканени, през които не кликване, без допълнително натоварване histori или индикатор.

Ако сте в IE, може да забележите, че преходите по този ifreymu напълно невидими за потребителя. Идеален и само. Тя е създадена с помощта на
зле документирани, но характеристиките за сигурност на ActiveX. Не Настройки специален браузър включват не е необходимо за него.

Както се вижда от примера, за да изолира ifreyma създаден временен документ ActiveX. Ето защо, операции на ifreymom и не се вижда от земята okna.Zdes получени че два обекта прозорец не е, както обикновено (първична + ifreym) и три:

  1. Главен прозорец прозорец
  2. прозорец Документ htmlfile - на разположение като IEFrameDocument.parentWindow
  3. Window ifreyma - на разположение като IEFrameNode.contentWindow. или използване getIframeDocument

Глобалните променливи IEFrameNode. IEFrameDocument ни даде директен достъп от главния прозорец на прозорец 2 и 3. Така че лесно можете да изпратите заявка за предизвикателството на сървъра

Но какво следва? Документът от сървъра, вероятно ще искате да се превърне в основния прозорец. Например, да го наречем handleMessage () функция с определен съобщение.

За да се получи такъв достъп, е необходимо предварително на основния прозорец, изпънете връзката на прозореца htmlfile от главния прозорец:

Обменът на данни е илюстрирано по-долу:

Ако решите да използвате този подход - нека да ви спаси от възможните часове на изкопаване на дебъгер. Преди това той обсъди метода GET.
Това е достатъчно връзки с вградена рамка.

От друга страна, в метода на POST, трябва да не form.target присвоите име на ifereym и ifreyma, а това ifreym трябва да се вижда в текущия прозорец.

Лесно е да се провери, че един прост пост в "frame3" рамката (в този пример) няма да има ефект, защото рамката не се вижда.

За да видите ifreym форма, е необходимо да се създаде в същия прозорец. Възможно е да се направи много начини. Например, добавете необходимите скриптове в htmlfile:

И предизвика желаната форма на прозореца:

Всички основни, надявам се, в текста там. Ако имате по-задълбочен интерес - приятен копаене в дебъгер.

Описаният метод предлага перфектна реализация на рекламни маркери, транспорт, който, за съжаление, работи само в IE. За други браузъри, можете да използвате всеки един нормален вложена рамка транспорт или други транспортни средства.

Основен пример за използване на вградена рамка за COMET с помощта на GET, можете да изтеглите.

  • версия за печат

Това е проблемът. Никъде не мога да намеря отговора. Ако използвате ayfreym линк към сайта на някой друг. В ayfreym страница се зарежда от горния ляв ъгъл. И понякога трябва да ложа зарежда от средата или след отстъп 100 пиксела от горната част, или това, което е истински тест вложка търсенето ayfrem която намира модел желаното място върху страницата и натоварването от него. Задачата ми се стори на пръв поглед елементарни vstvit скрипт търсене в прозореца и управлява вместо променлива константа, но по някаква причина нищо не излезе.

В този дух, аз направих една програма, но. Тя работи наполовина. Кой podskazhet- защо и как по-добре да се направи?

направено:
1) Първо скрипт чрез document.getElementById ( 'a1'). InnerHTML взема "разни" и обръща формите


и на второ място
където "различен-2" = F ( "разни" + KB) - всичко е ОК

2) Вторият сценария през document.getElementById ( "Textar"). InnerHTML отнема "различен-2" - всичко е наред -> на PHP получава "Други 2", и втори fout1 пълни отговор "дрън дрън-дрън-"

3) Третият сценария опитва:
Var str1 = document.getElementById ( "A3"). innerHTML
Var str1 = document.getElementById ( "A3"). стойност (безсмислени, но се опитва)
Var str1 = document.getElementById ( "fout1"). innerHTML
и др.
- Той се опитва от vykovyrnut на fout1 "дрън дрън-дрън-" 10 секунди след пост. но нищо не се случва. Какво грешка?

Как иначе може да ви въведе функция Var str1 =. (Отговор от PHP на пост-заявка), или нокаутиран в PHP Java-функция резултат на запитването "Други 2" на пост протокол (или по друг начин (как?). Има една работа, например?