Jquery 如何使用IE6检索元素的当前背景图像值?
这有点让人发疯。我有一个代码,它将当前背景图像从选定元素保存到一个变量中,然后我使用该变量创建一个img标记 简单地说,除了IE6之外,我测试过的所有浏览器都可以使用以下功能:Jquery 如何使用IE6检索元素的当前背景图像值?,jquery,internet-explorer-6,dd-belatedpng,Jquery,Internet Explorer 6,Dd Belatedpng,这有点让人发疯。我有一个代码,它将当前背景图像从选定元素保存到一个变量中,然后我使用该变量创建一个img标记 简单地说,除了IE6之外,我测试过的所有浏览器都可以使用以下功能: var bg = $('.element_selector').css('background-image'); IE6的返回值为“无”,这是不正确的。(在任何人建议尝试“背景图像”而不是“背景图像”之前,不要掷骰子。) 有什么办法可以让我得到这个价值吗 更新:我忘了提到有问题的背景图像是由处理的,现在看来是罪魁祸首—
var bg = $('.element_selector').css('background-image');
IE6的返回值为“无”,这是不正确的。(在任何人建议尝试“背景图像”而不是“背景图像”之前,不要掷骰子。)
有什么办法可以让我得到这个价值吗
更新:我忘了提到有问题的背景图像是由处理的,现在看来是罪魁祸首——如果我注释掉修复,我得到了我的值。如果有人知道我如何在png修复后仍然获取该值,请告诉我
在IE6中进行了一些测试之后,我能够用和背景src重现您的问题 这是我发现的。如果在调用
DD_belatedPNG.fix(“[selector]”)之前设置了background image
变量代码>然后您将得到所需的结果。如果您在之后进行设置,例如在单击事件中,您会得到值“无”
此外,DD_belatedPNG向包含背景图像的页面添加了一个图像元素(类为DD_belatedPNG_sizeFinder
),因此您可以1)重复使用、2)复制或3)从该元素获取src
属性值
以下是我的测试代码:
CSS:
HTML:
jQuery:
$(document).ready(function() {
// Works as expected
var bg = $('#myElement').css('background-image');
$('#test1').text("pre png fix: " + bg);
DD_belatedPNG.fix('#myElement');
$('#myElement').click(function() {
var bg = $(this).css('background-image');
var bgAll = $(this).css('background');
// This yields values of 'none' for bg and 'undefined' for bgAll
$('#test2').html("post png fix: " + bg + "<br />bg: " + bgAll);
// DD_belatedPNG creates an image element on the page with a class of
// 'DD_belatedPNG_sizeFinder' which can be used to get the image src
$('#test3').html('dd_belatedpng_sizeFinder: ' + $('.DD_belatedPNG_sizeFinder').attr("src"));
// Perhaps reapplying 'zoom' css will reapply the BG values?
$(this).css({ zoom: 0 }).css({ zoom: 1 });
// Set values again.
bg = $(this).css('background-image');
bgAll = $(this).css('background');
// No luck...same result as #test2
$('#test4').html("post png fix: " + bg + "<br />bg: " + bgAll);
});
});
$(文档).ready(函数(){
//工作如期进行
var bg=$('#myElement').css('background-image');
$('#test1').text(“png前修复:“+bg”);
DD_latedpng.fix('myElement');
$('#myElement')。单击(函数(){
var bg=$(this.css('background-image');
var bgAll=$(this.css('background');
//这将为bg生成“无”值,为bgAll生成“未定义”值
$('#test2').html(“后png修复:+bg+”
bg:+bgAll);
//DD_belatedPNG在页面上创建一个带有
//“DD_belatedPNG_sizeFinder”,可用于获取图像src
$('test3').html('dd#u belatedpng_sizeFinder:'+$('dd#u belatedpng_sizeFinder').attr(“src”);
//也许重新应用“缩放”css将重新应用BG值?
$(this.css({zoom:0}).css({zoom:1});
//再次设置值。
bg=$(this.css('background-image');
bgAll=$(this.css('background');
//没有运气…结果与测试2相同
$('#test4').html(“png后修复:+bg+”
bg:+bgAll);
});
});
在IE6中进行了一些测试之后,我能够用和背景src重现您的问题
这是我发现的。如果在调用DD_belatedPNG.fix(“[selector]”)之前设置了background image
变量代码>然后您将得到所需的结果。如果您在之后进行设置,例如在单击事件中,您会得到值“无”
此外,DD_belatedPNG向包含背景图像的页面添加了一个图像元素(类为DD_belatedPNG_sizeFinder
),因此您可以1)重复使用、2)复制或3)从该元素获取src
属性值
以下是我的测试代码:
CSS:
HTML:
jQuery:
$(document).ready(function() {
// Works as expected
var bg = $('#myElement').css('background-image');
$('#test1').text("pre png fix: " + bg);
DD_belatedPNG.fix('#myElement');
$('#myElement').click(function() {
var bg = $(this).css('background-image');
var bgAll = $(this).css('background');
// This yields values of 'none' for bg and 'undefined' for bgAll
$('#test2').html("post png fix: " + bg + "<br />bg: " + bgAll);
// DD_belatedPNG creates an image element on the page with a class of
// 'DD_belatedPNG_sizeFinder' which can be used to get the image src
$('#test3').html('dd_belatedpng_sizeFinder: ' + $('.DD_belatedPNG_sizeFinder').attr("src"));
// Perhaps reapplying 'zoom' css will reapply the BG values?
$(this).css({ zoom: 0 }).css({ zoom: 1 });
// Set values again.
bg = $(this).css('background-image');
bgAll = $(this).css('background');
// No luck...same result as #test2
$('#test4').html("post png fix: " + bg + "<br />bg: " + bgAll);
});
});
$(文档).ready(函数(){
//工作如期进行
var bg=$('#myElement').css('background-image');
$('#test1').text(“png前修复:“+bg”);
DD_latedpng.fix('myElement');
$('#myElement')。单击(函数(){
var bg=$(this.css('background-image');
var bgAll=$(this.css('background');
//这将为bg生成“无”值,为bgAll生成“未定义”值
$('#test2').html(“后png修复:+bg+”
bg:+bgAll);
//DD_belatedPNG在页面上创建一个带有
//“DD_belatedPNG_sizeFinder”,可用于获取图像src
$('test3').html('dd#u belatedpng_sizeFinder:'+$('dd#u belatedpng_sizeFinder').attr(“src”);
//也许重新应用“缩放”css将重新应用BG值?
$(this.css({zoom:0}).css({zoom:1});
//再次设置值。
bg=$(this.css('background-image');
bgAll=$(this.css('background');
//没有运气…结果与测试2相同
$('#test4').html(“png后修复:+bg+”
bg:+bgAll);
});
});
你能把你的代码放到JSFIDLE上吗?你能把你的代码放到JSFIDLE上吗?是的,是的。我尝试过的所有其他浏览器(IE7-8、FF、misc webkit)都会返回正确的背景图像值。在IE6中,css('background')返回undefined。我想我刚刚找到了答案。DDL BeldPNG似乎是罪魁祸首,我忽略了它可能是相关的。现在来找出png修复程序隐藏我的数据的位置。:)对,对。我尝试过的所有其他浏览器(IE7-8、FF、misc webkit)都会返回正确的背景图像值。在IE6中,css('background')返回undefined。我想我刚刚找到了答案。DDL BeldPNG似乎是罪魁祸首,我忽略了它可能是相关的。现在来找出png修复程序隐藏我的数据的位置。:)在分配之后将png修复移动到会引起一些心痛,但这是一个实用的解决方案(因为我在该页面上做了很多png修复)。多谢!在分配之后将png修复移动到会引起一些心痛,但这是一个实用的解决方案(因为我在该页面上做了很多png修复)。多谢!
$(document).ready(function() {
// Works as expected
var bg = $('#myElement').css('background-image');
$('#test1').text("pre png fix: " + bg);
DD_belatedPNG.fix('#myElement');
$('#myElement').click(function() {
var bg = $(this).css('background-image');
var bgAll = $(this).css('background');
// This yields values of 'none' for bg and 'undefined' for bgAll
$('#test2').html("post png fix: " + bg + "<br />bg: " + bgAll);
// DD_belatedPNG creates an image element on the page with a class of
// 'DD_belatedPNG_sizeFinder' which can be used to get the image src
$('#test3').html('dd_belatedpng_sizeFinder: ' + $('.DD_belatedPNG_sizeFinder').attr("src"));
// Perhaps reapplying 'zoom' css will reapply the BG values?
$(this).css({ zoom: 0 }).css({ zoom: 1 });
// Set values again.
bg = $(this).css('background-image');
bgAll = $(this).css('background');
// No luck...same result as #test2
$('#test4').html("post png fix: " + bg + "<br />bg: " + bgAll);
});
});