如何获得被CSS覆盖的内联样式!重要的是使用JavaScript

时间:2015-09-22 18:36:19

标签: javascript jquery html css

<div style="background: url(http://www.example.com/image.jpg) center center/cover;">

此内嵌背景图像被外部样式表覆盖:

div {
  background-image: none !important;
}

我的问题:使用JavaScript / jQuery,如何获取内联样式中定义但被CSS覆盖的背景图像的URL?

修改:尝试使用.css()将无效,因为它会获得计算出的背景样式,即none

3 个答案:

答案 0 :(得分:1)

你可以这样做:

function getStyle() {
  styles = $("div").attr("style");
  styles = styles.split(";");
  for (i = 0; i < styles.length; i++) {
    styles[i] = styles[i].replace(new RegExp(/http(.*)\:\/\//), "http$1___//");
    styles[i] = styles[i].split(":");
    styles[i][1] = styles[i][1].replace(/___/g, ":");
    if (styles[i][0].trim().indexOf("background") === 0)
      return styles[i][1].replace(/^(.*)url|[\(\)]/g, '').split(" ", 1)[0];
  }
}

工作代码段

&#13;
&#13;
$(function () {
  alert($("div").css("background-image"));
  alert(getStyle());
});

function getStyle() {
  styles = $("div").attr("style");
  styles = styles.split(";");
  for (i = 0; i < styles.length; i++) {
    styles[i] = styles[i].replace(new RegExp(/http(.*)\:\/\//), "http$1___//");
    styles[i] = styles[i].split(":");
    styles[i][1] = styles[i][1].replace(/___/g, ":");
    if (styles[i][0].trim().indexOf("background") === 0)
      return styles[i][1].replace(/^(.*)url|[\(\)]/g, '').split(" ", 1)[0];
  }
}
&#13;
div {
  background-image: none !important;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div style="background: url(http://www.example.com/image.jpg) center center/cover;">
&#13;
&#13;
&#13;

注意: $('div').css('background-image');将始终提供none的计算值。

答案 1 :(得分:1)

如果您不介意使用Regex:

var match = $('div').attr('style').match(/url\(["|']?(.+)["|']?\)/);
var url = match ? match[1] : 'default.jpg';

说明:

["|']?会允许您有引号。 (.+)捕获要恢复的网址。

在第二行,我们检查是否有匹配,如果没有,则返回默认网址。

答案 2 :(得分:0)

使用jQuery css方法获取DIV的背景图像:

var bg = jQuery('div').css('background-image');