Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome和Firefox上的窗口宽度错误_Javascript_Jquery_Browser_Error Handling_Width - Fatal编程技术网

Javascript Chrome和Firefox上的窗口宽度错误

Javascript Chrome和Firefox上的窗口宽度错误,javascript,jquery,browser,error-handling,width,Javascript,Jquery,Browser,Error Handling,Width,我有以下代码: function c() { var h = ($(window).height() - $('#maincontainer').outerHeight()) / 2; var w = ($(window).width() - $('#maincontainer').outerWidth()) / 2; $('#maincontainer').css('position', 'absolute'); $('#mai

我有以下代码:

function c() {
        var h = ($(window).height() - $('#maincontainer').outerHeight()) / 2;
        var w = ($(window).width() - $('#maincontainer').outerWidth()) / 2;

        $('#maincontainer').css('position', 'absolute');
        $('#maincontainer').css('top', h);
        $('#maincontainer').css('left', w);
    }

    $(window).resize(c);
    $(window).load(c);
resize
事件在我尝试的每个浏览器上都能正常工作,但是
load
总是返回8px的宽度值,将
maincainer
div放在屏幕的左边框上。 只有在IE8上,在窗口中间放置一个div,这才正确执行,在Chrome 22和Firefox 16上失败

编辑: 似乎有效的解决方案是:

    $(window).ready(c);
    $(window).load(c);
    $(window).resize(c);
此外,
主体
应具有
宽度:100%

而不是:

$(window).resize(c);
$(window).load(c);
做:

发生的情况是,您在加载任何内容之前询问文档的大小,因此(几乎)什么都没有得到。这会在文档“准备就绪”后立即执行,从而为您提供更有用的价值


您可能还需要将身体的宽度和高度设置为100%,并使用该尺寸而不是窗口。

问题可能是窗口首先加载,在加载任何其他html之前触发事件。这是我的想法,但我不知道解决方法。请改为尝试触发
ready
事件<代码>$(文档).ready(c)您可能还需要使您的身体达到100%的宽度和高度,并使用该尺寸而不是窗口。
$(function(){
    c();
    $(window).resize(c);
});