DHTML, iFrame и IE - PullRequest
       12

DHTML, iFrame и IE

0 голосов
/ 17 сентября 2010

У меня есть фрагмент JavaScript, который вставляет / удаляет iframe из DOM. В Chrome и FireFox все отлично, но в IE не отображается iframe. Код ниже - создание и вставка. При проверке с помощью инструментов разработчика я вижу, что iframe является частью DOM именно так, как я и ожидал. Любое предложение о том, что может привести к тому, что оно не будет отображаться?

function getiFrame(target) {
   var frame = document.getElementById(target);
   if (null == frame) {
       frame = document.createElement("iframe");
       frame.setAttribute("width", "100%");
       frame.setAttribute("height", "1000px");
       //frame.setAttribute("frameborder", "0");
       frame.setAttribute("id", target);
       frame.setAttribute("name", target);
       frame.setAttribute("src", "http://dmi.dk");
   } else {
       frame.src = "http://dmi.dk";
       frame.style.visibility = "visible";
   }

   return frame;
}

var frame = getiFrame(target);
var row = document.getElementById(contentRowId);
for (var i = 0; row.childNodes.length > 0; i++) {
         row.removeChild(row.childNodes[0]);
}

row.appendChild(frame);

EDIT: Чтобы уточнить, я попытался установить атрибуты напрямую (как это было предложено Тимом Дауном), что выше было результатом моих отчаянных попыток.

Далее при проверке DOM я получаю совершенно правильный тег iframe:

<iframe propdescname="full" width="100%" height="1000" id="full" src="http://dmi.dk">

и проверка, которая также показывает, что он прочитал и проанализировал src (http://dmi.dk) правильно. Я также могу проверить DOM этого сайта.

Так что меня озадачивает то, что, когда все работает. Что может помешать его отображению.

Ответы [ 2 ]

1 голос
/ 17 сентября 2010

Есть одна очевидная проблема:

frame = document.createElement("div");

должно быть

frame = document.createElement("iframe");

Кроме того, setAttribute является ненужным, многословным и подверженным ошибкам в IE.Вместо этого используйте свойства DOM:

frame.width = "100%";
frame.height = 1000;
//frame.frameBorder = 0;
frame.id = target;
frame.name = target;
frame.src = "http://vrk.dk";
0 голосов
/ 17 сентября 2010

Джим Коплиен называет это рисунком резиновой утки.«Вы не можете спросить хх, пока не посоветовались с резиновой уткой».Кто не решил там своего вопроса, спрашивая у кого-то совета.

Я редактировал свой пост, записывая, что iframe был в td, и пришел к выводу, что я не был уверен, что это действительно так.Проблема заключалась в том, что я удалил td и вставил iframe в tr, который IE, кстати, обрабатывает по-разному, когда выполняется динамически, а не статически.

Спасибо за прослушивание, играя роль "резиновой утки"

...