元素未在Microsoft Edge中呈现

问题描述 投票:2回答:3

我一直在遇到影响Microsoft Edge的奇怪问题。我正在使用painterro javascript库来构建图像编辑器,并且大多数都运行良好。但是有些元素没有正确呈现,我无法弄清楚原因。它似乎只影响Edge。 Firefox,Chrome,Safari,甚至IE11都运行良好。

像这样的简单页面显示了问题:

<html>
    <head>
        <script src="https://github.com/ivictbor/painterro/releases/download/v0.2.57/painterro-0.2.57.min.js"></script>
    </head>
    <body>
        <script>
            Painterro().show();
        </script> 
    </body>
</html>

页面初始加载时,不显示工具栏。元素存在于DOM中,在Dev工具中单击它们会使它们逐渐出现。水平调整浏览器窗口的大小也会导致它出现,可能是因为工具栏样式稍有变化并触发它重绘。

同样的问题也会影响设置和颜色选择器对话框。

我有点困惑,它看起来像一个可能的浏览器bug但我不能确定。我无法找到遇到此问题的任何其他任何示例。还有其他人遇到过类似的问题吗?

非常感谢!

html5 microsoft-edge
3个回答
2
投票

我也有同样的问题,发现[隐藏]属性在边缘网页上呈现内容时有一些问题(因为它在谷歌Chrome,Mozilla,IE中运行得非常好)并且删除了属性网站后加载完全正常。

所以不使用[hidden]而是使用* ngIf显示和隐藏内容。

我发现这个在微软边缘不起作用的可能原因是: -

隐藏的全局属性是一个布尔属性,表示该元素尚未或不再相关。因此,浏览器不会使用隐藏属性集渲染元素。

浏览器将“display:none”样式附加到具有隐藏属性的元素。当组件加载时,样式“display:none”不会自动更新。

并且* ngIf不显示/隐藏基于隐藏的显示属性的元素。它的工作原理是添加和删除DOM中的元素。


0
投票

这是由于使用了hidden属性。出于某种原因,在删除属性后,元素并不总是被重绘。需要更多的研究,但它看起来像Edge中的一个错误。

用display:none替换隐藏属性后,它可以正常工作。


0
投票

[hidden]取代*ngIf解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.