我知道帧很糟糕。但是我必须再坚持一下。我的问题来自“frameset”元素的非标准“border”属性:
<frameset border="0">
...
</frameset>
如果我不使用那个属性浏览器在每个帧之间放一个间隙。如果我使用该属性,HTML验证器会抛出有关“不支持的属性”的错误。
现在我听到你说“使用它并忽略验证器”,这没关系。我想我可以忍受一个验证器警告,并且浏览器似乎也不太担心它:)
我的问题主要是关于HTML技巧。如何将边框设置为0并保持浏览器兼容?将此视为未来类似问题的练习。比如我试过:
<frameset onload="this.border='0'">
它不起作用。
我尝试在内部框架中使用样式表来设置“border:0; margin:0; padding:0”,它也不起作用。差距似乎来自一个未知的来源。
我想过用Javascript编写:
document.write('<frameset border="0">');
但我有预感,无论如何都无法验证。
你能想到另一种解决方案吗?
其他不起作用的解决方案:
答案 0 :(得分:2)
使用{strong> frame
标记上的frameborder
属性,而不是border
标记上的frameset
。 {h}来自border
标签的frameborder
(frameset
}属性。{事实上,所有W3C的页面都在According值得一试。 frames可能有助于您查看。您还需要确保使用正确的DOCTYPE
。
在示例中:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
答案 1 :(得分:2)
根据我的测试,这些应该有效:
对于Opera(10):
frameSetObj.setAttribute("framespacing", "0");
对于IE8:
frameSetObj.setAttribute("framespacing", "0");
//set rows and cols attributes again if the frameset already had them.
frameSetObj.setAttribute("rows", rows);
frameSetObj.setAttribute("cols", cols);
适用于FireFox 3.5和Chrome 3
frameSetObj.setAttribute("frameborder", "0");
//same idea as IE8
frameSetObj.setAttribute("rows", rows);
frameSetObj.setAttribute("cols", cols);
总而言之,此代码应适用于所有浏览器:
frameSetObj.setAttribute("framespacing", "0");
frameSetObj.setAttribute("frameborder", "0");
frameSetObj.setAttribute("rows", rows);
frameSetObj.setAttribute("cols", cols);