在樣式表之間切換時,我遇到了Chromium 53和Firefox 49之間的一些奇怪的不一致行爲。在Chrome和Firefox中切換替代樣式表
我的樣式表中添加這樣的:
<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()調用有默認值啓動。)
這最近在Firefox和Chromium中工作,沒有任何問題,比如jQuery 2.2.4。
現在我試圖升級到jQuery 3.1.1。
在Chromium中,完全沒有問題 - 但在Firefox中,它在升級後不起作用。所有樣式表都是禁用的,樣式轉換器不會執行任何操作。
懷疑該removeAttr()已改變(jQuery的,現在的屬性和屬性之間的區別更嚴格的),我改變的setStyle到這似乎吸塵器在任何情況下,以下情況:
function setStyle(style) {
$('link.alternate-style').prop('disabled', function() {
return this.title != style;
});
}
現在,它工作在Firefox,但不是在鉻!該錯誤是不同的 - 風格切換器工作正常,但初始化程序已損壞,頁面最初是無風格的。
摘要:在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的初始化。