Javascript window.open大小不能正常工作。高度好,宽度搞砸了

时间:2012-08-26 22:08:29

标签: javascript variables methods size window.open

我遇到了一些JavaScript和window.open方法的问题。

我正在尝试根据当前时间控制弹出窗口的大小。小时控制高度,分钟(四舍五入到最接近的五分钟)控制宽度。

高度控制工作正常,并且对应正确的值...但是宽度总是在我的屏幕的100%,我无法理解为什么。

我已经发出一个测试警报,告诉我应该放入window.open方法的文本,这看起来很好 - 事实上,如果我将警报中的文本复制并粘贴到代码中并重新加载页面,然后高度和宽度都完美。看起来很奇怪。

这是我的代码......

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Untitled</title>
    <meta name="generator" content="BBEdit 10.1" />

<script type="text/javascript">

var d = new Date();
var h = 10*(d.getHours())+300
var m = d.getMinutes();

m = 10*(Math.round(parseInt(m)/5)*5)+300;

var a = "width=";
var b = ", height=";

var size = "'"+a+m+b+h+"'";

var openWin = function(){window.open('','',size)};


function test() {alert(h); alert(m); alert(size);}

</script>
</head>


<body onload="test()">


<input type="button" value="Open Window" onclick="openWin()" />

</body>
</html>

2 个答案:

答案 0 :(得分:4)

你有大小的报价。

你想要什么:

var size = a+m+b+h;
window.open('','',size)

OR

window.open('','', 'width=' + m + ', height=' + h)

你现在拥有的东西(在用尺寸代替它之后):

window.open('','','"width=' + m + ', height=' + h +'"')

评估为:

window.open('','','"width=500, height=450"')

答案 1 :(得分:0)

您的代码中存在多个错误。

  1. 您不需要parseInt(m)。 m已经类型编号。但是,如果您仍想在此处使用parseInt,请指定基数!否则parseInt会猜测,这会使得前导零号被解析为als八进制数而不是十进制数。

  2. 请勿在此处使用“'”:"'"+a+m+b+h+"'";。这不会使你的字符串“更多”字符串,它只会使你的字符串成为你的一部分。如果要在添加某些变量时强制键入String,则只需先添加一个空字符串:var myString = '' + a + b + c

  3. 这个会解决你的问题。