Wordpress - присвоение значения атрибута данных тела переменной - PullRequest
0 голосов
/ 03 февраля 2020

Я использую Wordpress и пытаюсь получить и присвоить значение атрибута данных переменной, используя javascript внутри функций. php в моей пользовательской дочерней теме.

Страница отображает следующее тело:

<body class="(...)" data-elementor-device-mode="desktop">

Я пытаюсь назначить «рабочий стол» переменной, используя следующую функцию внутри функций. php:

<script type="text/javascript">
    var deviceType = document.body.getAttribute("data-elementor-device-mode");
    console.log(deviceType);
</script>

Однако, глядя на консоль I получить "ноль". Что я делаю неправильно? Спасибо.

РЕДАКТИРОВАТЬ: я переключил код на использование функциональности набора данных в HTML5. Таким образом, теперь у меня есть следующее:

  var body = document.body;
  console.log(body);
  var bodyDevice = body.dataset.elementorDeviceMode;
  console.log(bodyDevice);

Первый файл console.log возвращает тело, как и ожидалось, но второй файл console.log по-прежнему возвращает значение «undefined».

РЕДАКТИРОВАТЬ 2: Это должно быть синтаксической проблемой, так как следующий

var bodyDevice = body.clientWidth;
console.log(bodyDevice);

вернет текущую ширину элемента body (что решает мою проблему); в любом случае, почему

var bodyDevice = body.dataset.elementorDeviceMode;
console.log(bodyDevice);

не возвращает значение "рабочий стол"? Спасибо.

1 Ответ

1 голос
/ 04 февраля 2020

Elementor вставляет данные, установленные JavaScript при его инициализации, см. Строку 271: https://github.com/elementor/elementor/blob/master/assets/dev/js/frontend/frontend.js

В основном ваш код ничего не возвращает, потому что он выполняется до того, как Elementor был вставлен набор данных ... Итак, data-elementor-device-mode на момент исполнения вашего кода нет.

Попробуйте выполнить код после загрузки страницы, используя:

window.onload = function() {
  var bodyDevice = document.body.dataset.elementorDeviceMode;
  console.log(bodyDevice);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...