我遇到了一个奇怪的问题,即在javascript注入一些dom元素之后,IE7中没有遵循为这些元素定义的css规则(即:不会发生这些元素的样式)。 (firefox和chrome工作正常,其他人没有测试过)
我尝试过的事情: - 清除缓存 - 没有其他css规则优先(没有'更具体'的样式等)
JS(在体内)(我在这里使用原型注射,但我认为它不相关)(关于Js:一些Jsonp技巧将照片添加到基于纬度/经度的div中)<script type="text/javascript">
function ws_results(json) {
var div = document.createElement('div');
div.setAttribute('class', 'pano_img_cont');
var paras = $A(json.photos);
paras.each(function(para){
var img = document.createElement('img');
img.setAttribute('src', para.photo_file_url);
div.appendChild(img);
});
var cc = $('panaramio_anchor');
Element.insert(cc.up(),{top:div});
}
</script>
<script src="http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=public&from=0&to=15&minx=13.375&miny=52.4917&maxx=13.424999&maxy=52.541702&size=square&callback=ws_results" type="text/javascript"></script>
CSS(可以肯定的是,作为ie.css中的最后样式添加)
.pano_img_cont{
display:block;
float:left;
position:relative;
width:100%;
margin-left:6px;
margin-top:3px;
padding-right:5px;
margin-bottom:-18px;
white-space:normal;
padding:10px;
background:#f00;
}
.pano_img_cont img{
display:inline-block;
width:67px;
height:55px;
margin:0 3px 5px 3px;
background:#eee;
float:left;
}
任何人都知道怎么了? 也许css在dom自动更新后没有对css-styling进行“重新运行”?嗯,只是在猜这里..
感谢。
答案 0 :(得分:6)
setAttribute在IE7及更低版本中被破坏。
使用
div.className = 'pano_img_cont'
代替。
IE的setAttribute实现是有效的:
HTMLElement.prototype.setAttribute = function (attribute, value) {
this[attribute] = value;
}
...只要属性名称和DOM属性名称相同,就可以了。但是,class
是JS中的保留关键字,因此该属性称为className
。这在IE中打破了。
如果直接设置属性,它可以在任何地方使用。
答案 1 :(得分:0)
不要使用setAttribute,请使用jQuery的addClass方法: