Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Работа с фреймом (https://javascript.ru/forum/events/1329-rabota-s-frejjmom.html)

Sufir 20.06.2008 01:02

Работа с фреймом
 
Здраствуйте.
Необходимо передать данные в форму и отправить. Подскажите пожалуйста как обратиться к форме в другом документе или ссылочку - где почитать об этом. Например есть документ index.html со скриптом и документ с формой inframe.html отображаемый в iframe на странице index.html
<html>
<head>
 <title>index.html</title>
 <script type="text/javascript">
   // ... код после которого необходимо передать данные в форму
   // на странице inframe.html ...
 </script>
</head>
    <body>
        <iframe id="myFrame" src="inframe.html"></iframe>
    </body>
</html>

<html>
<head>
    <title>inframe.html</title>
</head>
    <body>
        <form action="" method="post">
        <input id="input1" name="input1" type="text" />
        <input type="submit" />
        </form>
    </body>
</html>


Или может быть, возможно отправить POST-данные не перезагружая всю страницу?
И второй вопрос - как скриптом открыть какую либо страницу в фрейме? Следующий код меняет значение аттрибута src, однако страница по прежнему остаётся открыта inframe.html

var myFrame = document.getElementById('myFrame');
myFrame.setAttribute("src", "any_inframe.html");

адер 23.07.2008 09:47

Можно попробовать модную штуку AJAX.

Вот выдернуто с рабочего сайта.

function getHTTPRequestObject() {
var xmlHttpRequest;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (exception1) {
try {
xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (exception2) {
xmlHttpRequest = false;
}
}
@else
xmlhttpRequest = false;
@end @*/

if (!xmlHttpRequest && typeof XMLHttpRequest != 'undefined') {
try {
xmlHttpRequest = new XMLHttpRequest();
} catch (exception) {
xmlHttpRequest = false;
}
}
return xmlHttpRequest;
}

var httpRequester = getHTTPRequestObject();

var couldProcess = false;

function Nmsg()
{

if (!couldProcess && httpRequester) {
httpRequester.open("GET", "./ajax.aspx?act=nmsg",true);
httpRequester.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
httpRequester.onreadystatechange = processNmsg;
couldProcess = true;
httpRequester.send(null);
}
}


function processNmsg()
{
if ( httpRequester.readyState == 4 ) {
if ( httpRequester.status == 200) {

//А вот это контрол в другом фрейме =) parent.frames[0].document.getElementById('msgLab').innerHTML=httpR equester.responseText;
couldProcess = false;
}
}
}

Sufir 23.07.2008 10:23

Спасибо за почти своевременный ответ, прошло-то всего чуть больше месяца, но задача давно решена. А AJAX штука хорошая конечно, но не всегда стоит того... Но всё равно спасибо, хоть кто-то как-то отозвался...


Часовой пояс GMT +3, время: 06:23.