11

我正在尝试通过 javascript 将 iframe 插入浏览器 DOM,如果 IE 似乎无法删除边框,我想删除边框。我试过这些无济于事:

iframeElement.style.borderStyle="none";

iframeElement.style.frameBorder = "0";

任何建议将不胜感激。

4

5 回答 5

22

奇怪的是,我今天早些时候自己也在寻找这个问题的答案。我发现设置frameBorderto0属性确实有效,只要你在 iframe 添加到 document 之前这样做

var iframe = document.createElement("iframe");
iframe.frameBorder = 0;
document.body.appendChild(iframe);
于 2009-10-04T22:28:57.493 回答
6

frameBorder属性直接存在于iframe元素上,不是 CSS 属性。

尝试:

iframeElement.frameBorder = 0;
于 2009-10-04T18:15:18.340 回答
3

尝试这个。它会在 IE 和其他浏览器中找到任何 iframe 元素并删除它们的边框(尽管您可以在非 IE 浏览器中设置 CSS 样式“border : none;”而不是使用 JavaScript)。并且即使在生成 iframe 并在文档中就位后使用它也会起作用(例如,以纯 HTML 而不是 JavaScript 添加的 iframe)!

这似乎可行,因为 IE 创建边框,不是像您期望的那样在 iframe 元素上,而是在 iframe 的 CONTENT 上——在 BOM 中创建 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.
         }
   }
于 2012-01-23T21:46:18.553 回答
0

尝试 iframeElement.style.borderCollapse = 1; 或 iframeElement.style.borderWidth = 0;

于 2009-10-04T16:40:16.580 回答
0

您还应该能够在 HTML 中使用“条件注释”,以便仅在 IE8 中包含“frameborder”属性:

 <!--[if IE 8]>
 <iframe id="my-iframe" frameborder="0"></iframe>
 <![endif-->
 <!--[if gt IE 8]><!-->
 <iframe id="my-iframe"></iframe>
 <!--<![endif]-->
于 2016-03-14T17:43:29.357 回答