2

我的页面适用于除 IE 10 之外的所有浏览器。当我在 IE 10 中本地运行此页面时,似乎没有任何问题,只有当我使用 IE 10 远程打开页面时。

JavaScript 应该用主文本测量 div 并设置屏幕外 div 的高度和宽度。IE 10 这样做是错误的。必须设置这些 div 的宽度,否则当单击菜单中的项目时,它们将无法正确动画。

我检查了不推荐使用的功能,但没有发现。我检查了语法,没有错。(据我所知) IE 中的控制台不报告任何错误。

任何人都知道为什么本地它在每个浏览器中都能正常工作,但远程显示它的唯一浏览器是 IE?

编辑:

我已经删除了 init 中的函数括号,以便 DOM 可以启动,尽管这并没有解决问题。

脚本(嵌入页面头部):

<script src="scripts/jquery-1.10.1.min.js"></script>
<script>
var mainTextDiv = null;
var animate;
var acc = 0;
var currentTab = "home";
var nextTab;
var working = 0;
var bar = 600;
var divW;

function init(){


    onWC(currentTab);
    document.getElementById(currentTab).style.width = 'auto';
    divW = document.getElementById(currentTab).offsetWidth;
    document.getElementById("home").style.width = divW + "px";
    document.getElementById("profile").style.width = divW + "px";
    document.getElementById("news").style.width = divW + "px";
    document.getElementById("forums").style.width = divW + "px";
    document.getElementById("webshop").style.width = divW + "px";
    document.getElementById("status").style.width = divW + "px";

}

function onWC(tab){
    var divh = document.getElementById(tab).offsetHeight;
    document.getElementById('tabcontainer').style.height = ( divh + 50 ) + "px";
}
function moveDiv(tabName){
    if (currentTab == tabName){
        return;
    }
    if (working == 1){
        return;
    }
    working = 1;
    nextTab = tabName;
    removeDiv();
}
function removeDiv(){
    mainTextDiv = document.getElementById(currentTab);
    mainTextDiv.style.left = parseInt(mainTextDiv.style.left) + (0.5+acc) + "px";
    if (parseInt(mainTextDiv.style.left) > 2000){
        mainTextDiv.style.left = 2000 + "px";
        onWC(nextTab);
        getDiv();
        return;
    }

    acc += 0.15;

    animate = setTimeout(removeDiv,10);
}
function getDiv(){
    mainTextDiv = document.getElementById(nextTab);
    mainTextDiv.style.left = parseInt(mainTextDiv.style.left) - (0.5+acc) + "px";   
    if (parseInt(mainTextDiv.style.left) <= 0){
        mainTextDiv.style.left = 0 + "px";
        currentTab = nextTab;
        working = 0;
        return;
    }

    acc -= 0.15;

    animate = setTimeout(getDiv,15);
}
window.onload = init;
window.onresize = init;

$(function() {
    $("#menu ul li a").hover(
        function(){
            $(this).css("background-color", "#525252");
            $(this).css("color", "#FFF");
        },
        function() {
            $(this).css("background-color", "#FFF");
            $(this).css("color", "#525252");
        }
    );
});
</script>
4

1 回答 1

3

更改window.onresize = init();window.onresize = init;

就目前而言,在init()加载 JS 文件时尝试立即运行,这会引发错误,因为 DOM 尚未加载。

于 2013-06-11T13:20:18.493 回答