2016-11-17 6 views
0

Я сталкиваюсь с каким-то странным непоследовательным поведением между 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.

ответ

0

Обновление: путем тестирования с последней конструкцией из хрома 56, похоже, что это ошибка хрома, которая с тех пор исправлена.

Смежные вопросы