Javascript IE8 SCRIPT87:参数无效。

Javascript IE8 SCRIPT87:参数无效。,javascript,internet-explorer-8,styles,loader,Javascript,Internet Explorer 8,Styles,Loader,所以我有一个典型的讨厌的没有解释的IE8错误。它写“Script87:无效参数”。 代码如下: var loaded = false; function loader(wrapperId) { var Loader = document.createElement("div"); var image = document.createElement("img"); image.src = "../scripts/loader/1.g

所以我有一个典型的讨厌的没有解释的IE8错误。它写“Script87:无效参数”。 代码如下:

    var loaded = false;
    function loader(wrapperId) {
        var Loader = document.createElement("div");
        var image = document.createElement("img");
        image.src = "../scripts/loader/1.gif";


        Loader.style.marginTop = ((window.innerHeight / 2) - image.height) + 5 + "px";
        //error appears right here. ^

        Loader.style.marginLeft = ((window.innerWidth / 2) - (image.width)) + 5 + "px";
        Loader.style.display = "block";


        Loader.id = "loader";
        Loader.appendChild(image);
        document.body.appendChild(Loader);


        var imLoading = setInterval(function () {
            if (loaded == true) {
                var containerLoader = document.getElementById(wrapperId);
                var loaderDivBar = document.getElementById(Loader.id);
                loaderDivBar.innerHTML = "";
                containerLoader.style.visibility = "visible";
                document.body.removeChild(loaderDivBar);
                document.body.overflow = "visible";
                clearInterval(imLoading);
            }
        }, 50);
        //place this call behind body object.
    }
现在,除了IE8之外,它在所有方面都能很好地工作。 这是它把错误吐出来的部分:

Loader.style.marginTop = ((window.innerHeight / 2) - image.height) + 5 + "px";

Console.log
window.innerHeight
就在错误行之前,您看到了什么?结果是未定义的,是在IE9中实现的…在图像实际加载之前,您正在读取图像的宽度和高度。如果您已将错误缩小到一行,您不认为检查计算结果会有所帮助吗?当我进行控制台日志调用时,IE8确实返回未定义。Teemu,谢谢,我不知道它是在IE9中实现的,这也许可以解释它。有什么规避建议吗?@user2588440设置
body{height:100%}
并检索
.body.getBoundingClientRect().bottom
可能是一个解决方案。()