从 background-image 属性获取 URL

IT技术 javascript jquery regex trim
2021-01-21 03:09:39

我目前正在使用它从 background-image 属性中获取 url:

var url = $(this).find('div').css('background-image');
url = url.substr(4, url.length - 5);

然而,这在某些浏览器(IE6-9)中工作正常,而不是:

url(http://.com/)

它的

url("http://.com/)

是否有一种故障安全方法可以从该属性中获取 url?无需进行浏览器检测或其他一些东西?

1个回答

你可以这样做:

url = url.replace(/^url\(["']?/, '').replace(/["']?\)$/, '');

如果它存在并且resp,这将从字符串的开头删除url('从最后。url("")')

@HasanTayyarBESIK,正则表达式是贪婪的,因此您需要指定您不希望在捕获中使用引号。IE:url.replace(/^url\(['"]?([^'"]+)['"]?\)/,'$1');
2021-03-17 03:09:39
url.replace(/^url\(['"]?(.+)['"]?\)/,'$1'); 会更短
2021-03-18 03:09:39
@Ozzy:这是一个很好的答案,但我不会称其为“故障安全”,因为如果有人接管您的项目并开始使用多个背景......
2021-03-23 03:09:39
那好一点:(url.replace(/^url\(['"]?(.+?)['"]?\)/,'$1');不要拿最后一个“)
2021-04-02 03:09:39