//JS if($("#down-mask").size()==0){ var str= '<div id="down-mask">'+ '<div id="mask-gif"></div>'+ '<div id="mask-all"></div>'+ '</div>'; $("body").append(str); } //CSS #mask-gif{background:transparent url(../images/arrow.gif) center no-repeat;z-index: 999;}原理即:点击按钮的时候,如果页面中没有遮罩层,则直接把str添加到DOM中,如果有遮罩层的话,显示遮罩层就OK了。
见左下角红色框标记的地方。背景图地址完全正确。但始终无法显示。
也即,Chrome虽然构建了id="mask-gif"这个节点,但并没有加载其背景的gif图片并进行渲染。
//点击下载遮罩效果 function downloadMask(){ $("body").append('<img id="hide-img-hack" src="/public/images/arrow.gif">');//chrome bug hack var downBtn=$(".download-btn"); downBtn.die("click").live("click",function(){ if($("#down-mask").size()==0){ var str= '<div id="down-mask">'+ '<div id="mask-gif"></div>'+ '<div id="mask-all"></div>'+ '</div>'; $("body").append(str); } var downMsk=$("#down-mask"); downMsk.show(); downMsk.die("click").live("click",function(){ downMsk.hide(); }) }) }
$("body").append('<img id="hide-img-hack" src="/public/images/arrow.gif">');//chrome bug hack
重点在加粗的这句(#hide-img-hack这个hack图片请自行写样式隐藏{display:none;})。
参见CSDN上别人碰到的同样一个问题:
关于动态添加img节点 在chrome里不能显示图片,在IE正常显图片