0

我遇到了一些 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>
4

2 回答 2

4

你有关于大小的引号。

你想要什么:

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

或者

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

你目前拥有的(在用 size 代替它的实际情况之后):

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

评估为:

window.open('','','"width=500, height=450"')
于 2012-08-26T22:18:17.430 回答
0

您的代码中有几个错误。

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

  2. 不要在这里使用“'”:"'"+a+m+b+h+"'";. 这不会使您的字符串成为“更多”字符串,它只会使 ' 成为您的字符串的一部分。如果你想在添加一些变量时强制输入字符串,那么只需先添加一个空字符串:var myString = '' + a + b + c.

这个可以解决你的问题。

于 2012-08-26T22:27:02.507 回答