在切换样式表时,我在Chromium 53和Firefox 49之间遇到了一些奇怪的不一致行为。
我的样式表添加如下:
<link class="alternate-style" rel="stylesheet" title="Carbon"
type="text/css" href="assets/css/alt/Carbon.css" />
...
切换台的工作方式如下:
function setStyle(style) {
$('link.alternate-style')
.prop('disabled', 'disabled')
.filter(function() { return this.title == style; })
.removeAttr('disabled');
}
(启动时使用默认值调用setStyle()。)
直到jQuery 2.2.4,这在Firefox和Chromium中都没有任何问题。
现在我尝试升级到jQuery 3.1.1。
在Chromium中,根本没有问题 - 但在Firefox中,它在升级后无法正常工作。所有样式表都被禁用,风格转换器不会做任何事情。
怀疑removeAttr()已更改(jQuery现在更严格地区分属性和属性),我将setStyle更改为以下似乎更清晰的以下内容:
function setStyle(style) {
$('link.alternate-style').prop('disabled', function() {
return this.title != style;
});
}
现在它适用于Firefox,但不适用于Chromium!错误是不同的 - 样式切换器工作正常,但初始化程序被破坏,页面最初将没有样式。
总结:在2.2.4中,两个版本的代码都有效。在3.1.1中,旧代码适用于Chromium但不适用于Firefox,而新代码适用于Firefox但不适用于Chromium。
通过测试,我分离了可在两种浏览器中运行的代码部分:
function setStyle(style) {
$('link.alternate-style')
.prop('disabled', true) // <-- necessary for chromium
.prop('disabled', function() {
return this.title != style;
});
}
该线似乎是多余的 - 该属性将再次被覆盖。但是评论它会打破Chromium的初始化。
答案 0 :(得分:0)
更新:通过使用最新的dev 56版本进行测试,看来这是一个已被修复的铬虫。