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