#javascript #html #dom #salesforce
#javascript #HTML #dom #salesforce
Вопрос:
Я пытаюсь добавить класс в тело следующим образом:
const body = document.querySelector('body');
body.classList.add('someClass');
Проблема в том, что у меня есть другой «#document» в iframe, в котором также есть элемент body. Таким образом, он добавляет в него точно такой же класс. Как мне выбрать самый внешний #document и добавить класс только к элементу body в этом документе?
Я попытался посмотреть на разницу в списке классов, выполнив это:
if (body.classList.contains('somethingThatShouldntBeThere')) {
body.classList.add('someClass');
}
Это не сработало. Похоже, что javascript добавляет класс ко ВСЕМ телам в DOM. Есть идеи?
PS. И, пожалуйста, обратите внимание, что это на странице Salesforce, я внедряю этот javascript. Поэтому я не могу контролировать исходный код.
Комментарии:
1.
It seems like the javascript adds the class to ALL bodies in the DOM
Он не должен —querySelector
будет выбирать только один элемент. Может быть, ваш JS работает как в iframe, так и на родительской странице, что приводит к изменению обоих?2. Это скорее звучит так, как будто скрипт выполняется на обеих страницах.
querySelector
будет выбран только первый найденный элемент.3. Хм, да, этот код выполняется в расширении Chrome. Это должно быть так, это не похоже на querySelectorAll
4. Попробуйте обернуть свой код внутрь
if (parent === null) { ... }
, чтобы он не запускался на странице в iframe.5. о, это хорошая идея. Позвольте мне попробовать это.