2009-10-04 2 views
8

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

iframeElement.style.borderStyle="none"; 

и

iframeElement.style.frameBorder = "0"; 

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

+0

+1, была такая же проблема, Ответ Тима был прекрасен. Заголовок нуждается в редактировании, кстати: jav * s * ascript. Сделал бы это, если бы мог. – Pedro

+0

[Это] [1], кажется, работает для IE8, (IE такая боль !!) [1]: http://stackoverflow.com/questions/12414525/how-to-get- rid-of-border-for-an-iframe-in-ie8 – 2013-12-10 07:58:41

ответ

0

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

+0

Они не работают как на IE8, так и на IE7. –

5

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

Try с:

iframeElement.frameBorder = 0; 
+0

Gah, я ниспроверг это, сделал еще несколько исследований и понял, что этот ответ не совсем ошибочен (см. Мой ответ для разъяснения), но, по-видимому, не может удалить мой нисходящий канал, если этот ответ не будет отредактирован. Сожалею. –

+0

@Tim: Не волнуйтесь, отредактируйте, если вы хотите удалить ваш downvote, я добавил ссылку на атрибут frameBorder в спецификации уровня DOM Core 2 ... – CMS

+0

@CMS: Сделано, спасибо. –

15

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

var iframe = document.createElement("iframe"); 
iframe.frameBorder = 0; 
document.body.appendChild(iframe); 
+0

+1 очень интересно. У IE8 все еще есть такая же проблема, можете ли вы поверить в это !? Добавление frameBorder inline заставляет документ больше не проверять HTML 5, так что только trcik должен добавить его через JS, как вы предлагаете. –

+0

+1 здесь же, заказная вещь была большой проблемой. – Pedro

2

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

Это похоже на работу, потому что IE создает границу, а не в элементе iframe, как и следовало ожидать, но в CONTENT iframe - после создания iframe в спецификации. ($ @ & * # @ !!! IE !!!)

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

У меня ушло много часов работы до точки отчаяния, чтобы понять это ...

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

// ========================================================================= 
// 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

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

<!--[if IE 8]> 
<iframe id="my-iframe" frameborder="0"></iframe> 
<![endif--> 
<!--[if gt IE 8]><!--> 
<iframe id="my-iframe"></iframe> 
<!--<![endif]-->