ОБНОВЛЕНИЕ:
Я только что нашел дополнительную информацию. Кажется, что в Chrome текущийSr c изображения часто будет пустым, тогда как в Firefox URL-адрес всегда правильный. JS пытается получить доступ к currentSr c до того, как он станет доступен? Есть ли способ предотвратить это?
Я создаю веб-сайт Drupal 8 и, чтобы использовать модуль адаптивных изображений с фоновым изображением, я придумал следующее обходное решение. Функция JS ниже, setParallaxImage (), берет currentSr c из img в элементе изображения и устанавливает его в качестве фонового изображения для самого внешнего div. Сам img не отображается (display: none в CSS) и ему предоставляется фиктивное изображение, так как оно мне нужно только для получения currentSr c. Функция вызывается с onload и onresize.
Кажется, что код хорошо работает в Firefox. При изменении размера браузера после точки останова изображение становится серым на долю секунды, а затем загружает изображение из правильного источника. Однако с Chrome при быстром изменении размера после точки останова изображение может стать серым и вообще не отображаться, то есть background-image: url (). Обычно, если я изменяю размер окна еще пару раз, изображение, наконец, появляется. Кто-нибудь знает, почему это может происходить? Спасибо за чтение.
JS
function setParallaxImage() {
const parallaxContainer = document.getElementsByClassName('paragraph--type--parallax-banner-with-text');
for(var i = 0; i < parallaxContainer.length; i++) {
console.log('in setparallax');
var x = parallaxContainer[i];
var parallax = x.getElementsByClassName('field--name-field-parallax-image-top-')[0];
var picture = parallax.getElementsByTagName("picture")[0];
var sourceURL = picture.querySelector('img').currentSrc;
x.setAttribute('style', 'background-image: url(' + sourceURL +')');
var img = picture.getElementsByTagName("img")[0].setAttribute('src', '/sites/default/files/src_images/dummy_image.gif');
}
}
window.onload = setParallaxImage
window.onresize = setParallaxImage;
HTML
<div class='paragraph--type--parallax-banner-with-text'>
<div class='field--name-field-parallax-image-top-'>
<picture>
<!-- several source tags here -->
<img src="will-be-given-dummy-image-in-JS">
</picture>
</div>
</div>