弹出窗口的大小与window.open不一致并调整内部宽度/高度

时间:2014-08-12 16:21:09

标签: javascript html css

我想打开一个弹出窗口,其中包含我提供的确切尺寸。

我正在使用

window.open(url,'newwindow','resizable=yes,menubar=no,status=no,toolbar=no,width='+width+',height='+height+',left='+left+',top='+top+',screenX='+left+',screenY='+top)

对于我使用的例子:

width='400px'
height='300px'
top=left='300px'

在Chrome中它运行正常,我得到一个内部大小为400x300px的新窗口。

在IE(v11)中,我得到一个404x304px的窗口。

在FF(v31)中,我得到一个398x299px的窗口。

但我需要它与Chrome中的400x300px一样,否则我的窗口调整大小事件监听器会出现大问题。

我在这里疯了,所以我在这里做错了吗?有谁知道如何解决这个问题,还是已知问题?

我只是在这个项目中使用纯HTML / JavaScript。

编辑:

我想出了一些解决方法。 我只是在弹出式html的HEAD标签中添加:

<script>
    window.innerResizeTo = function(targetWidth, targetHeight) {
        if(window.innerWidth || window.innerHeight) {
            var innerWidth = window.innerWidth,
            innerHeight = window.innerHeight;
        } else {
            var innerWidth = window.document.documentElement.clientWidth || window.document.body.clientWidth,
            innerHeight = window.document.documentElement.clientHeight || window.document.body.clientHeight;
        }

        if (innerWidth != targetWidth && innerHeight != targetHeight) {
            if(window.outerWidth || window.outerHeight) {
                var outerWidth = window.outerWidth,
                outerHeight = window.outerHeight,
                fixedwidth = targetWidth + outerWidth - innerWidth,
                fixedheight = targetHeight + outerHeight - innerHeight;
            } else {
                window.resizeTo(300,300);

                var outerWidth = window.document.documentElement.clientWidth || window.document.body.clientWidth,
                outerHeight = window.document.documentElement.clientHeight || window.document.body.clientHeight,
                fixedwidth = targetWidth + 300 - outerWidth,
                fixedheight = targetHeight + 300 - outerHeight;
            }

            window.resizeTo(fixedwidth,fixedheight);
        }
    }

    window.innerResizeTo(400,300);

</script>

它非常丑陋但它可以工作(在win7 x64上使用IE v11 FF v31和Chrome v36)。

我希望这可以帮助其他有相同或类似问题的人。 提升想法非常受欢迎。

0 个答案:

没有答案