Javascript-форум (https://javascript.ru/forum/)
-   Я не знаю javascript (https://javascript.ru/forum/ya-ne-znayu-javascript/)
-   -   Получить html из ифрейма (https://javascript.ru/forum/ya-ne-znayu-javascript/3842-poluchit-html-iz-ifrejjma.html)

Roin 28.05.2009 17:09

Получить html из ифрейма
 
Здравствуйте.
Подскажите как можно получить в переменную html загрузившейся страницы в ифрейме.
Например есть
var iframe = (isGecko) ? document.getElementById("frameId") : frames["frameId"];
var iWin = (isGecko) ? iframe.contentWindow : iframe.window; 
var iDoc = (isGecko) ? iframe.contentDocument : iframe.document;

x-yuri 29.05.2009 01:56

а доменное имя такое же?

Roin 29.05.2009 13:20

нет в том то и проблема

ZoNT 29.05.2009 13:23

значит никак.

Roin 30.05.2009 16:24

А если на том же домене ?
document.write(" <iframe src='' width=500 border=0 height=500 id='frameId' name='frameId' ></iframe>");


function load()
{
var iframe = (isGecko) ? document.getElementById("frameId") : frames["frameId"];
var iWin = (isGecko) ? iframe.contentWindow : iframe.window; // Это объект window
var iDoc = (isGecko) ? iframe.contentDocument : iframe.document; // Это объект document
 
document.write(iDoc.getElementById('captcha_img').src);


     
}
window.onLoad=load();

Не выводит ((

x-yuri 31.05.2009 03:01

document.write надо очень редко, кроме того это очень распространенный источник ошибок - если его использовать после window.onload, он стирает документ перед тем, как что-то написать

по поводу "как найти iframe'овский document":
iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document

Roin 31.05.2009 14:07

Вот такой код пробовал
var iframe = (document.getElementById("frameId")) ? document.getElementById("frameId") : frames["frameId"];
var iDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;
document.write(iDoc.images[0].src);

И такой
var iframe = document.getElementById("frameId") ? document.getElementById("frameId") : frames["frameId"];
var iDoc = iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document;
document.write(iDoc.getElementById('captcha_img').src);

Не помогает :(
В опере последней тестирую

x-yuri 31.05.2009 14:26

а доменное имя такое же?

Roin 31.05.2009 14:27

Вот так попробовал
function get(iframe) {
  var doc=iframe.contentDocument;
  if (!doc && iframe.contentWindow) doc=iframe.contentWindow.document;
  if (!doc) doc=window.frames["frameId"].document;
  if (!doc) return false;
  if (doc.location=="about:blank") return false;
  return doc;
}

  var iframe = document.getElementById("frameId");
  if(!iframe && frames["frameId"]) iframe = frames["frameId"];
  
  var ifr = get(iframe);
  
  

document.write(ifr.getElementById('captcha_img').src);
//и так
document.write(ifr.images[0].src);

Тоже не выходит (

Roin 31.05.2009 14:34

А как тогда проверить получил ли js адрес картинки без document.write ?

Roin 31.05.2009 14:46

Цитата:

Сообщение от x-yuri (Сообщение 20501)
а доменное имя такое же?

Извиняюсь не заметил.
Да, такое же.

Roin 31.05.2009 16:12

function load()
{



  var iframe1 = document.getElementById("if1") ? document.getElementById("if1") : window.frames["if1"];
  var doc = iframe1.document;
  
  //var s = doc.images[0].src;
//document.write(s);

for (i=0; i<20; i++)
document.write (doc.images[i].src+"<br>"); 
  
  
   
  
  
}
window.onLoad=load();

Выводит картинки родителя :(

x-yuri 31.05.2009 16:24

а почему у меня работает?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
	<title>title</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
window.onload = function() {
    document.getElementsByTagName('a')[0].onclick = function() {
    var iframe = document.getElementsByTagName('iframe')[0];
        var d = iframe.contentDocument   ? iframe.contentDocument   
                                         : iframe.contentWindow.document;
    	alert( d.body.firstChild.nodeValue );
    	return false;
    }
}
</script>
</head>
<body>
<iframe src="2.html"></iframe>
<a href="#">click</a>
</body>
</html>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
	<title>title</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
asd
</body>
</html>

Roin 01.06.2009 12:52

Спасибо огромное, сработало !
Подскажите, как запустить ф-ю описанную в ифрейме.
Например, в ифрейме есть форма:
<form name="orderForm" id="orderForm" onSubmit="return validateDetails(this)" method="post" action="">
Мне нужно нажать на на кнопку этой формы, но конструкция
d.getElementById("orderForm").submit();

Только перезагружает страницу не выполняя обработчика повешенного на форму :(
Подскажите пожалуйста как нажать на форму чтобы запустился обработцик повешенный на форму

x-yuri 01.06.2009 13:41

а что ты такое с фреймами делаешь?

Roin 01.06.2009 14:07

Хочу нажать на кнопку формы во фрейме. Только кнопка та является <input type='image' а на <form повешен обработчик onSubmit="return validateDetails(this)" :(

x-yuri 01.06.2009 14:53

я имею в виду, зачем понадобились фреймы? Что за форма в этом фрейме? (сначала фроде речь шла о другом доменном имени)


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