2016-11-17 18 views
0

スタイルシートを切り替えるときに、Chromium 53とFirefox 49の間に何らかの矛盾した動作が発生しました。ChromeとFirefoxの両方でスタイルシートを切り替える

私のスタイルシートは、次のように追加されます。

function setStyle(style) { 
    $('link.alternate-style') 
    .prop('disabled', 'disabled') 
    .filter(function() { return this.title == style; }) 
    .removeAttr('disabled'); 
} 

(のsetStyle()がデフォルト値で起動時に呼び出された。)

この:

<link class="alternate-style" rel="stylesheet" title="Carbon" 
     type="text/css" href="assets/css/alt/Carbon.css" /> 
... 

スイッチャーは、このように動作しますFirefoxとChromiumでjQuery 2.2.4のように問題なく動作しました。

今、私はjQuery 3.1.1にアップグレードしようとしています。

Chromiumでは、まったく問題はありませんが、Firefoxではアップグレード後に機能しません。すべてのスタイルシートは無効になっており、スタイルチェンジャーは何もしません。

removeAttrは()、私はどのような場合にはクリーナー思え以下にのsetStyleを変更(jQueryのは、今より厳密属性とプロパティを区別)変更されたことを疑っ:、

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の初期化が中断されます。

答えて

0

更新:最新のchromium 56の開発ビルドでテストすると、これは修正されたクロムバグです。

関連する問題