Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как поместить в переменную someVariable, все содержимое iframe (https://javascript.ru/forum/events/70769-kak-pomestit-v-peremennuyu-somevariable-vse-soderzhimoe-iframe.html)

Scheme 01.10.2017 16:49

Как поместить в переменную someVariable, все содержимое iframe
 
Друзья, помогите с явно ламерской задачей млин!
Как поместить в переменную someVariable, все содержимое iframe id="someID", то есть вложенный документ #document со всем его содержимым.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
<iframe id="someId" class="someClass">
  
  #document
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
    </body>
    </html>
  
</iframe>
</body>
</html>


Такой вариант = undefined
var someVariable= document.getElementsByTagName("iframe").innerHTML;


а так все дерево, не катит!
document.documentElement.innerHTML


Может в связке с php или можно средствами js.

void() 01.10.2017 17:20

Может так?

var someVariable = document.getElementsByTagName('iframe')[0].innerHTML;

j0hnik 01.10.2017 17:24

у него же id есть
var someVariable = document.querySelector('#someID').innerHTML;

void() 01.10.2017 17:38

Да вроде работает. А какой браузер у вас?

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
<iframe id="someId" class="someClass">
  
  #document
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
    </body>
    </html>
  
</iframe>

<script>
var someVariable = document.getElementsByTagName('iframe')[0].innerHTML;
alert(someVariable);
</script>
</body>
</html>

Scheme 01.10.2017 18:06

спасибо, вроде работает и все просто, у меня тут что-то!

void() 01.10.2017 18:23

Не знаю. Так вроде тоже работает.

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<iframe id="someId" class="someClass">
		#document
		<!DOCTYPE html>
		<html lang="en">
		<head>
			<meta charset="UTF-8">
			<title>Document</title>
		</head>
		<body>
		</body>
		</html>
	</iframe>
	<button type="submit" onclick="someFunct();">Клик</button>
	<script type="text/javascript">
		function someFunct() {
			var someVariable = document.getElementsByTagName('iframe')[0].innerHTML;
			 someVariable2 = someVariable.replace(/&lt;/g, '<').replace(/&gt;/g, '>');
			document.getElementById("someArea").value = someVariable2;
		}
	</script>
	<textarea name="" id="someArea" style="position: absolute;" cols="30" rows="10"></textarea>
</body>
</html>

Scheme 02.10.2017 02:07

можно еще один вопрос?
 
А можно, далее из содержимого someVariable:
#document
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
    </body>
    </html>


вывести только body с его содержимым, alert-ом в качестве примера или положить результат в другую переменную.

j0hnik 02.10.2017 02:44

добавьте эту строку
var a = someVariable.substring(someVariable.indexOf('<body>')+6, someVariable.lastIndexOf('</body>'));


или эту если нужно выводить вместе с тегом <body>
var a = someVariable.substring(someVariable.indexOf('<body>'), someVariable.lastIndexOf('</body>')+7);

Scheme 02.10.2017 03:15

Да, то что надо! Спасибо, Спасибо всем друзья!

рони 02.10.2017 03:21

:-? может нужно это?
document.getElementsByTagName('iframe')[0].contentWindow.document.body.innerHTML


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