Как стилизовать значок входящей почты/чата Shopify 2.0 (внутри iframe)?

ПРОБЛЕМА

Значок чата Shopify мешает большому количеству контента (распространенный вопрос на их форумах), но старые решения CSS не работают, потому что новый значок папки «Входящие/чат» теперь находится внутри iframe, а мой JS хромает.


ПЫТАЛСЯ

Прочитал много ответов Stackoverflow, а также сообщений в блогах, но не могу заставить его работать, извините. И в сочетании с возрастом некоторых ответов неясно, являются ли ответы, которые я пробовал, «правильным» способом ведения дел.

Тем не менее, вот упрощенная версия того, где я нахожусь...

<iframe id = "dummy-chat-button-iframe" name = "dummy-chat-button-iframe" src = "about:blank"></iframe>

<script>
  var iframe = document.getElementById("dummy-chat-button-iframe");
  var element = iframe.contentWindow.document.getElementById("dummy-chat-button")[0];
  element.style.height = "40px";
  element.style.width = "40px";
</script>

Вышеприведенное было тестом, чтобы увидеть, могу ли я повлиять на элементы внутри iframe, фактические селекторы/стили, на которые мне нужно настроить таргетинг, будут...

button#dummy-chat-button.chat-toggle {
  margin-top: 3px;
  height: 40px;
  width: 40px;
  padding: 0;
}
button.chat-toggle svg {
  width: auto;
  height: 20px;
  margin: auto;
}

ПРИМЕЧАНИЕ. Я не контролирую HTML-код iframe, стили или сам вызов iframe, поэтому могу использовать CSS и JS только вне iframe.


ВОПРОСЫ

  1. Основываясь на приведенной выше информации, может ли кто-нибудь показать мне JS, необходимый для стилизации элементов в iframe?
  2. Учитывая количество стилей, которые мне нужно изменить, должен ли я добавить элемент <style> в заголовок iframe и возможно ли это с помощью JS?

Извините, мой JS настолько ограничен, любая помощь или указатели в правильном направлении будут очень признательны.

Привет, Бен

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование преобразования в iframe одновременно масштабирует несколько свойств CSS без необходимости использования JS...

/* Shopify inbox chat icon */
#dummy-chat-button-iframe {
  transform: scale(0.75);
  bottom: -5px !important;
  right: -5px !important;
}

После изменения размера другие правила перемещают значок ближе к нижнему/правому краю.

Одна проблема: после того, как кто-то пообщается и закроет окно чата, значок вернется к своему исходному размеру/положению.

Я думаю, здесь JS будет работать лучше?

Другие вопросы по теме