Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Работа с динамически созданым Iframe (https://javascript.ru/forum/events/43497-rabota-s-dinamicheski-sozdanym-iframe.html)

Whinterstorm 08.12.2013 01:36

Работа с динамически созданым Iframe
 
Уважаемое сообщество, окажите помощь!
Условия:
  1. Необходимо создать кнопку, по нажатию на которую, появится iframe, внутри которого будет загружен родительский документ.
  2. Кнопка и её cобытие тоже создана динамически через JS.
Суть проблемы:
Iframe остаётся "пустым".
Пробовал записать адрес element.src = 'имя исходника' - не пашет
Делаю копию исходного файла в той же папке с другим именем -всё отлично!! (но категорически нужен только один файл - исходный).
Через DOM и innerHTML пробовал вставить в тело только статику - всё равно глухо.
Помогите советом добрые люди!!! :help: :help: :help:

danik.js 08.12.2013 03:54

Цитата:

Сообщение от Whinterstorm
появится iframe, внутри которого будет загружен родительский документ.

Думается мне что браузеры не допустят этого, дабы избежать рекурсии.

Whinterstorm 08.12.2013 16:57

Конфликта нет, так как создание IFRAME осуществляется по событию(нажатие кнопки).
Решение оказалось банальным!:
var all_buttons = document.getElementsByTagName('input');

window.onload = function(class_name, b_value){
	//default settings
	class_name = class_name ? class_name : 't1'; 
	b_value = b_value ? b_value : 'Task ' + (all_buttons.length+1);
	button = document.createElement('input');
	button.type = 'button';
	button.value = b_value;
	button.id = 'button_'+ all_buttons.length;
	button.onclick = function (){
		get_iframe();
	}
}

function get_iframe(){
	var page_code = document.documentElement.innerHTML;
	page_code = page_code.substring(0,page_code.indexOf('<input')) + '</body></html>';

	var iframe = document.createElement("iframe");
	iframe.id = 'iframe';
	iframe.style.width = "400px";
	iframe.style.height = "400px";

	document.body.insertBefore(iframe,document.getElementsByTagName('input')[0]);
	iframe.onload = function (){
		var i_body = iframe.contentWindow.document.getElementsByTagName('*')[0];
		i_body.innerHTML = page_code;
	}
}

Whinterstorm 08.12.2013 16:59

Спасибо за оперативную поддержку!:thanks:


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