如何在IE8中获取元素的样式坐标

时间:2016-04-19 04:52:04

标签: javascript css internet-explorer-8

我现在已经在这里敲了一会儿,所以我需要聪明人的帮助。

我正在努力提取'背景位置'的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中的像素值吗?

1 个答案:

答案 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>

Screenshot of IE11's developer tools, showing the value of document.getElementById("a").style.backgroundPosition