логика, которая работает на любом браузере / устройстве, кроме Samsung Интернет - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть кусок кода, который работает на всем, кроме Samsung Интернет.Chrome Mobile прекрасно работает, как и мобильные эмуляторы инструментов разработчика Chrome.Я очищаю данные просмотра при каждой попытке.

Когда нажимается кнопка категории услуг (первое изображение ниже), она должна открывать связанную карту сброса начальной загрузки (второе изображение ниже).

Первое изображение:

enter image description here

Второе изображение:

enter image description here

Вот репозиторий Githubhttps://github.com/dByler1/windle-chimney https://dbyler1.github.io/windle-chimney/

Часть .on ('click', function () {} работает. Каждая переменная записывается в журнал чисто. Она просто не войдет в логические блоки.

$(".servicesBTN").on("click", function (e) {
  //get the data target value of the button that was clicked which is the same as the accordian content IDs
  let dataTarget = this.getAttribute("data-target")
  let servicesDisplayValue = getComputedStyle(document.getElementById('servicesDescriptions')).display

  //all three console.logs fire and log expected results
  console.log('data target ' + dataTarget)
  console.log('services display value ' + servicesDisplayValue)
  console.log('test hasClass' + $(dataTarget).hasClass('show'))

  //if the clicked button's associated card does have the show class, set the data toggle to blank so it won't change
  //none of the logs in the if blocks fire
  if ($(dataTarget).hasClass("show") && servicesDisplayValue === 'block') {
    this.setAttribute("data-toggle", "")
    console.log('first block - already open - display block')
  } else if ($(dataTarget).hasClass("show") && servicesDisplayValue === 'none') {
    this.setAttribute("data-toggle", "")
    mobileShowServiceInfo($(this))
    console.log('second block - already open - display none - mobile assumption')
  }
  else {
    //give the clicked button a data-toggle of collapse so it will open
    this.setAttribute("data-toggle", "collapse")
    mobileShowServiceInfo($(this))
    changeAllAngleIcons($(this))
    console.log('third block - ')
  }
})

1 Ответ

0 голосов
/ 24 ноября 2018

Вот предположение об источнике проблемы, с которой вы столкнулись в Samsung Internet ( SI ).

Сначала проблема была в вызове функции: mobileShowServiceInfo($(this)).Не в блоках if / else.

В этой функции проблема заключалась в этой строке: ( Из репозитория GitHub OP )

document.getElementById('backBTN').classList.replace('d-none', 'd-md-none')

Так что я думаю, что SI действительно не нравится неназначенный результат для .replace().

Это, вероятно, должно работать:

let tempClassList = document.getElementById('backBTN').classList;
document.getElementById('backBTN').classList = tempClassList.replace('d-none', 'd-md-none');

Но это, хотя и короче и яснее, исправило проблему:

$('#backBTN').removeClass('d-none').addClass('d-md-none');

Итак, я догадываюсь , что вместо простого отбрасывания результата .replace() из-за отсутствия назначения SI просто нарушает код ...


Не советуйте: используйте несколько точек с запятой ; в конце каждой строки кода.Подробнее об этом читайте в этом SO-ответе .

;)

...