我想打开一个弹出窗口,其中包含我提供的确切尺寸。
我正在使用
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)。
我希望这可以帮助其他有相同或类似问题的人。 提升想法非常受欢迎。