javascript - IE11/Edge 不遵守 DOM 中的链接/CSS 顺序

标签 javascript html css internet-explorer dom

tl;dr:IE11/Edge 似乎优先考虑最后使用 javascript 加载的 CSS 文件中的样式,而不是它们在 DOM 结构中的显示方式。

我找不到任何其他报告此问题的人,但正在寻求帮助以确认我的问题。

我有一个加载 JS 库的函数(如果 cdn 失败,则在本地),这包括一行到 'appendTo' 或 'prependTo' 的 'head' 元素(传入 'method')。

$("<link>", { rel: "stylesheet", type: "text/css", "href": css })[method]("head");

问题是核心网站样式可能会覆盖库样式,所以我认为“prependTo”“head”可以确保核心样式覆盖库 - 这在 Firefox 和 Chrome 中确实有效。但在 IE 中,库样式仍然覆盖,就好像 CSS 文件在 DOM 中的核心文件之后,即使通过检查 DOM 显示它在之前。

在我的例子中,如果 CDN 失败,我将从本地版本加载 dataTables CSS 和 JS - 因为我希望我的自定义网站 CSS 覆盖库,所以我使用“prependTo”来确保 dataTables CSS 在我的之前文档头标签中的自定义网站 CSS。 IE11 仍然“最后”应用它或给予它优先权。在模拟 IE10 等时确实如此。尽管我不再有“真正的”旧 IE 版本的测试区域来验证这是否始终如此。

您能确认这是 IE 中的功能吗?你知道这是什么时候开始的吗?你知道解决办法吗?尽量避免在我的 CSS 文件中出现一堆“!important”。

最佳答案

我什至在 Edge 16 上也看到了完全相同的问题。我不幸的解决方法是通过 JavaScript 手动附加任何 css,而不是在我的 html/页面模板中。

    var link = document.createElement('link');
    link.rel = 'stylesheet';
    link.href = '/link/to/style.css';
    document.querySelector('body').appendChild(link);

关于javascript - IE11/Edge 不遵守 DOM 中的链接/CSS 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43381137/

相关文章:

javascript - 如何访问 JavaScript 映射中的(数组)键?

javascript - 遍历网格项时出现 "Reduce of empty array with no initial value"错误

javascript - 如何在 jQuery 中使用 mousedown 控制计时器?

javascript - 通过目录在预加载页面上循环(间隔)图片

html - 错误 NullInjectorError : R3InjectorError(AppModule)[Number -> Number -> Number]: NullInjectorError: No provider for Number

javascript - 如何将元素的背景位置更改为新的 CSS 属性?

css - Chrome 中的 float 右输入

javascript - 使用javascript的动态字典

javascript - 我如何在 Web 应用程序中同时使用 jQuery 和 Spry 框架

html - IE 7 中的背景图像问题