我今天遇到了一个奇怪的问题。我们有一个网页,通过CSS隐藏body
,然后有一些JavaScript将body
设置为display: block
以显示它。 (这是我们需要添加的一些iFrame破坏逻辑的一部分)。
我们在一个页面上遇到了问题,但仅限于Safari。在查看事物时,我发现罪魁祸首是调用包含自己的body
标记的包含文件,因此我们最终得到格式错误的HTML,其中嵌套了body
标记现有的body
代码。
由于JS正在寻找第一个body
标记,我们实际想要显示的内容从未显示过,因为它是用第二个body
标记包装的。
我认为Firefox只是对HTML的宽容并忽略了第二个body
标记。当我们查看服务器上的页面时,Safari没有这样做。
但是,如果我抓取文件并在本地运行,Safari会告诉我:
遇到额外的
<body>
。将属性迁移回原始<body>
元素并忽略标记。
我很好奇为什么Safari可能会采用这种“政策”来忽略本地错误的HTML而不是服务器。如果重要,那就是我们正在点击的https网站。也许Safari是明智的,并试图避免任何潜在的安全问题,允许坏HTML?