我正在尝试通过 javascript 将 iframe 插入浏览器 DOM,如果 IE 似乎无法删除边框,我想删除边框。我试过这些无济于事:
iframeElement.style.borderStyle="none";
和
iframeElement.style.frameBorder = "0";
任何建议将不胜感激。
我正在尝试通过 javascript 将 iframe 插入浏览器 DOM,如果 IE 似乎无法删除边框,我想删除边框。我试过这些无济于事:
iframeElement.style.borderStyle="none";
和
iframeElement.style.frameBorder = "0";
任何建议将不胜感激。
奇怪的是,我今天早些时候自己也在寻找这个问题的答案。我发现设置frameBorder
to0
属性确实有效,只要你在 iframe 添加到 document 之前这样做。
var iframe = document.createElement("iframe");
iframe.frameBorder = 0;
document.body.appendChild(iframe);
尝试这个。它会在 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.
}
}
尝试 iframeElement.style.borderCollapse = 1; 或 iframeElement.style.borderWidth = 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]-->