Jquery document.ready事件在我的元素css样式加载到IE8之前激发
我有以下代码在五月页Jquery document.ready事件在我的元素css样式加载到IE8之前激发,jquery,css,cross-browser,Jquery,Css,Cross Browser,我有以下代码在五月页 var x = parseInt($(this).css('backgroundPosition').split(" ")[0]); 在IE9、FF和Chrome中,一切都很好,即使是Iphone,但IE8和IE7抛出了一个错误,我调试的问题是.css方法无法解析该属性 我在页面底部使用的document.ready函数似乎在css应用于元素之前加载了这段代码,在本文中,这是一个td table元素 有没有关于如何优雅地解决这个问题的想法 谢谢你把实际问题放在一边,我建议
var x = parseInt($(this).css('backgroundPosition').split(" ")[0]);
在IE9、FF和Chrome中,一切都很好,即使是Iphone,但IE8和IE7抛出了一个错误,我调试的问题是.css方法无法解析该属性
我在页面底部使用的document.ready函数似乎在css应用于元素之前加载了这段代码,在本文中,这是一个td table元素
有没有关于如何优雅地解决这个问题的想法
谢谢你把实际问题放在一边,我建议你先做一个
null
检查,这样它就不会破坏浏览器中产生问题的其他javascript执行流
var bPos = $(this).css('backgroundPosition');
var x;
if(bPos){
bPos = bPos.split(" ");
if(bPos.length){
x = parseInt(bPos[0]);
}
}
我确实使用jQuery在
backgroundPosition
(和backgroundPosition
)属性上获得了undefined
如果您分别引用以下各项,看起来确实可以在IE中访问背景位置中的X和Y:
<html>
<head>
<style type="text/css">
body {
background: url(http://www.gravatar.com/avatar/e1122386990776c6c39a08e9f5fe5648?s=128&d=identicon&r=PG);
background-repeat: no-repeat;
background-position: 100px 500px;
}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js"></script>
<script type="text/javascript">
</script>
</head>
<body>
<p>Test of doc.ready and bg pos in IE8/9</p>
<script>
$(document).ready(function(){
if ($.browser.msie) {
console.log('X: ' + $('body').css('backgroundPositionX'));
console.log('Y: ' + $('body').css('backgroundPositionY'));
} else {
console.log('X: ' + parseInt($('body').css('backgroundPosition').split(" ")[0]));
console.log('Y: ' + parseInt($('body').css('backgroundPosition').split(" ")[1]));
}
});
</script>
</body>
</html>
然而,它看起来确实不适用于Firefox(不输出任何内容)。所以我调整了代码来检测IE
LOG: X: 100px
LOG: Y: 500px