Как удалить границу из iframe в IE, используя JavaScript - PullRequest
8 голосов
/ 04 октября 2009

Я пытаюсь вставить iframe в браузер DOM через javascript и хочу удалить границу, если IE, но не кажется, что. Я пробовал это безрезультатно:

iframeElement.style.borderStyle="none";

и

iframeElement.style.frameBorder = "0";

Любые предложения будут высоко оценены.

Ответы [ 5 ]

16 голосов
/ 05 октября 2009

Как ни странно, я искал ответ на этот вопрос сам сегодня ранее. Я обнаружил, что установка свойства frameBorder в 0 работает, , если вы делаете это до того, как iframe будет добавлен в документ .

var iframe = document.createElement("iframe");
iframe.frameBorder = 0;
document.body.appendChild(iframe);
5 голосов
/ 04 октября 2009

Атрибут frameBorder существует непосредственно в элементе iframe , не является свойством CSS.

Попробуйте с:

iframeElement.frameBorder = 0;
2 голосов
/ 24 января 2012

Попробуй это. Он найдет любые элементы iframe и удалит их границы в IE и других браузерах (хотя вы можете просто установить стиль CSS «border: none;» в браузерах не IE вместо использования JavaScript). И он будет работать, даже если он используется ПОСЛЕ того, как iframe сгенерирован и размещен в документе (например, iframe, добавленные в обычном HTML, а не в JavaScript)!

Похоже, это работает, потому что IE создает границу не на элементе iframe, как вы ожидаете, а на СОДЕРЖАНИИ iframe - после создания iframe в спецификации. ($ @ & * # @ !!! IE !!!)

Примечание. Часть IE будет работать (конечно) только в том случае, если родительское окно и iframe происходят из ТОГО ЖЕ источника (тот же домен, порт, протокол и т. Д.). В противном случае скрипт получит ошибки «отказано в доступе» в консоли ошибок IE. Если это произойдет, ваш единственный вариант - установить его до того, как он будет сгенерирован, как отметили другие, или использовать нестандартный атрибут frameBorder = "0". (или просто позвольте IE выглядеть беспорядочно - мой любимый вариант;))

Мне потребовалось МНОГИЕ часы работы до отчаяния, чтобы понять это ...

Наслаждайтесь. :)

// =========================================================================
// Remove borders on iFrames

if (window.document.getElementsByTagName("iframe"))
   {
      var iFrameElements = window.document.getElementsByTagName("iframe");
      for (var i = 0; i < iFrameElements.length; i++)
         {
            iFrameElements[i].frameBorder="0";   //  For other browsers.
            iFrameElements[i].setAttribute("frameBorder", "0");   //  For other browsers (just a backup for the above).
            iFrameElements[i].contentWindow.document.body.style.border="none";   //  For IE.
         }
   }
0 голосов
/ 14 марта 2016

Вы также должны иметь возможность использовать «условные комментарии» в HTML, чтобы включить атрибут «frameborder» только в IE8:

 <!--[if IE 8]>
 <iframe id="my-iframe" frameborder="0"></iframe>
 <![endif-->
 <!--[if gt IE 8]><!-->
 <iframe id="my-iframe"></iframe>
 <!--<![endif]-->
0 голосов
/ 04 октября 2009

Попробуйте iframeElement.style.borderCollapse = 1; или iframeElement.style.borderWidth = 0;

...