Как я могу определить URL фонового изображения отделения через JavaScript?

Я нашел много информации о том, как изменить фоновое изображение отделения, использующего JavaScript, но я пытаюсь использовать JavaScript для определения, какое фоновое изображение отображается. Код для установки изображения идет как это:

document.getElementById("widgetField").style.background="url(includes/images/datepicker_open.png)";

Я попробовал каждую комбинацию, о которой я могу думать для доступа к URL фонового изображения, но до сих пор провал:

alert(document.getElementById("widgetField").style.backgroundImage.url);  - returns Undefined
alert(document.getElementById("widgetField").style.backgroundImage);  - empty response
alert(document.getElementById("widgetField").style.background);
alert(document.getElementById("widgetField").style.background.image);
alert(document.getElementById("widgetField").style.background.url);
alert(document.getElementById("widgetField").style.background.image.url);
alert(document.getElementById("widgetField").style.background.value);
alert(document.getElementById("widgetField").style.background.image.value);
alert(document.getElementById("widgetField").style.background.image.value);
alert(document.getElementById("widgetField").style.backgroundImage.value);

Кто-либо знает, как сделать это? Действительно ли это возможно?

BTW, вот способ, которым изображение устанавливается в CSS в начале:

#widgetField {
    width: 290px;
    height: 26px;
    background: url(../images/datepicker_closed.png);
    overflow: hidden;
    position: relative;
}

ОБНОВЛЕНИЕ:

Если я выполняю следующее, это работает:

document.getElementById("widgetField").style.background="url(includes/images/datepicker_open.png)";
alert(document.getElementById("widgetField").style.background);

Однако я, может казаться, не получаю доступ к свойству URL, пока оно не было установлено JavaScript, даже при том, что оно уже определяется в файле CSS. Существует ли причина, почему необработанная установка CSS не доступна?

8
задан gariepy 17 March 2016 в 03:36
поделиться

4 ответа

Попробуйте это:

var img = document.getElementById('widgetField'),
style = img.currentStyle || window.getComputedStyle(img, false),
bi = style.backgroundImage.slice(4, -1);
14
ответ дан 5 December 2019 в 10:03
поделиться

Получите фоновое свойство:

alert(document.getElementById("widgetField").style.background);

Отображение: URL (включает / Images / datepicker_open.png)

Редактировать: Ответ Andy E должен быть рядом с тем, что вам нужно. Одно отличие состоит в том, что для т. Е. Вам нужно

currentStyle.backgroundImage 

вместо

currentStyle.background
0
ответ дан 5 December 2019 в 10:03
поделиться

Это должно сделать это

alert( document.getElementById("widgetField").style['background-image'] );

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

  var style = document.getElementById("widgetField").style;
  var allprops = '';
  for  ( i in style )
    allprops += style[i] + ':' + i + '\n' ;
  alert( allprops );

[редактировать] Как я иду, я добавлю здесь ..
Google Chrome: Стиль [«Фоновое изображение»]
Firefox 3.5.7: style.background
IE 6: Стиль. Backgroundground

Стиль. Работа на всех браузерах Работа на всех браузерах (IE6, IE7, FF 3.5.7, Google Chrome, Opera 10.10, Safari 4.0.4) для Windows ..

0
ответ дан 5 December 2019 в 10:03
поделиться

Вы устанавливаете свойство background, background и backgroundImage являются двумя отдельными свойствами, поэтому backgroundImage после установки background пустое. Если вы хотите получить доступ только к url-части свойства фона, вы можете использовать следующий код:

var wfBg = document.getElementById("widgetField").style.background;
var wfBgUrl = wfBg.match(/(url\(['"]?([^)])['"]?\))/i);

if (wfBgUrl)
{
    // Add your code here. wfBgUrl[1] is full string including "url()", 
    // wfBgUrl[2] would be just the url inside the parenthesis
}

Для стилей, установленных css документами:

if (window.getComputedStyle) // For standards compliant browsers
    var wfBg = window.getComputedStyle(
        document.getElementById("widgetField")
    ).getPropertyValue("background");
else // for IE
    var wfBg = document.getElementById("widgetField").currentStyle.background;
3
ответ дан 5 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: