Добавьте динамические элементы в элемент Iframe, чем я создаю - PullRequest
2 голосов
/ 21 апреля 2010

У меня небольшая проблема, если я создаю динамически элемент IFRAME и динамически связываю элементы с новым iframe. Это работает, если я сделаю это:

var miiframe=document.getElementById("miiframe");
var myElement=content.document.createElement("LABEL");
myElement.innerHTML="blabla";
miiframe.contentDocument.body.appendChild(myElement);

но если я это сделаю, это не сработает:

var miiframe=content.document.createElement("IFRAME");
miiframe.src="about:blank";
document.body.appendChild(miiframe);
var myElement=content.document.createElement("LABEL");
myElement.innerHTML="blabla";
miiframe.contentDocument.body.appendChild(myElement);

Я вижу iframe, но не вижу элемента label. Самое смелое, если перед appendElement я делаю и предупреждаю, что это работает !!!

var miiframe=content.document.createElement("IFRAME");
miiframe.src="about:blank";
document.body.appendChild(miiframe);
var myElement=content.document.createElement("LABEL");
myElement.innerHTML="blabla";
alert("now works!!!");
miiframe.contentDocument.body.appendChild(myElement);

С элементом DIV работает, но я хочу сделать это с элементом IFRAME !!!

Этот код предназначен для Firefox. Спасибо !!

Ответы [ 2 ]

8 голосов
/ 21 апреля 2010

Если вы добавите « src » в свой iframe, он попытается загрузить этот источник (даже если это « about: blank »).После того, как загрузка завершена, она перезаписывает ваш ярлык.Вы можете добавить слушателя для ожидания загрузки iframe:

var miiframe=content.document.createElement("IFRAME");
miiframe.src="about:blank";
miiframe.addEventListener('load', function (e) {
    var myElement=content.document.createElement("LABEL");
    myElement.innerHTML="blabla";
    miiframe.contentDocument.body.appendChild(myElement);
}, false);

document.body.appendChild(miiframe);
2 голосов
/ 16 ноября 2012

Мой случай был немного другим, я не указывал источник, я просто пытался создать редактор HTML, я делал что-то вроде этого:

function init() {
    var iframe = document.createElement("iframe");
    iframe.setAttributes('id','edit');
    document.body.appendChild(iframe);
    var y = document.getElementById('edit');
    y.contentDocument.designMode = 'On';
}

Но это никогда не срабатывало, любопытно, что когда я помещал некоторые оповещения в некоторые ifs, например if ('designMode' в y) и тому подобное, после пары предупреждений я смог написать в iframe. ...: S

Большое спасибо за вашу помощь, ваше объяснение понятно, iframe всегда пытается загрузить .... он переписывает любую другую инструкцию раньше ... поэтому я изменил ее и теперь работает на 100%:)

function init() {
    var iframe = document.createElement("iframe");
    iframe.addEventListener('load', function () {
    iframe.contentDocument.designMode="on";
    }, false);
    document.body.appendChild(iframe);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...