我现在已经在这里敲了一会儿,所以我需要聪明人的帮助。
我正在努力提取'背景位置'的xy坐标。我元素中的价值。为了测试这个,我设置了它(css_class =一个预定的css类):
var d = document.getElementById(css_class);
alert("1: "+getStyle(d,'background-position'));
alert("2: "+d.style.backgroundPosition);
alert("3: "+d.currentStyle.backgroundPosition);
alert("4: "+d.style.cssText);
alert("5: "+window.getComputedStyle(d,null).getPropertyValue('background-position'));
test1--> undefined
test2--> blank
test3--> undefined
test4--> blank
test5-->'Object doesn't support property or method 'getComputedStyle''
没有什么能让我回到xy像素值。显然,我已经完成了我的研究,通过我可以找到的所有微软DOM API参考(这是我获得getStyle函数的地方(下面,但也使用getComputedStyle),搜索了一些mozilla开发者论坛等。 这是我在这个论坛上找到的功能:
function getStyle(el,styleProp) {
var camelize = function (str) {
return str.replace(/\-(\w)/g, function(str, letter){
return letter.toUpperCase();
});
};
if (el.currentStyle) {
return el.currentStyle[camelize(styleProp)];
} else if (document.defaultView && document.defaultView.getComputedStyle) {
return document.defaultView.getComputedStyle(el,null)
.getPropertyValue(styleProp);
} else {
return el.style[camelize(styleProp)];
}
}
基本上我很确定这个问题是因为我的IE 11浏览器恢复到IE8模式(在开发者控制台中这样说)。其中大多数都在Chrome和Mozilla中运行得很好。我在IE8中进行测试,因为我的客户仍然使用IE 8.此外,服务器端代码(这是我没有完全权限的共享点服务器)似乎强制页面显示在IE8中模式。
我还尝试添加html5标记<!doctype html>
,以强制浏览器在html5中呈现。仍停留在IE8模式。无论如何,任何人都可以指向一个DOM API调用,它可以工作并拉出IE8中的像素值吗?
答案 0 :(得分:0)
我创建了一个测试页面,其中background-position以内联样式定义,我可以在.style.backgroundPosition属性中选择它。 (我必须单击按钮才能启用JavaScript,因为它是本地文件。)
<html>
<head>
<meta http-equiv="x-ua-compatible" content="ie=8">
<title>ie8 test</title>
</head>
<body>
<div id="a" style="width: 200px; height: 200px; border: 1px outset gray; background-image: url('./Untitled.png'); background-position: 10px 10px;"></div>
<script>
document.write(document.getElementById("a").style.backgroundPosition);
</script>
</body>
</html>