我遇到了一些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>
答案 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)
您的代码中存在多个错误。
您不需要parseInt(m)。 m已经是类型编号。但是,如果您仍想在此处使用parseInt,请指定基数!否则parseInt会猜测,这会使得前导零号被解析为als八进制数而不是十进制数。
请勿在此处使用“'”:"'"+a+m+b+h+"'";
。这不会使你的字符串“更多”字符串,它只会使你的字符串成为你的一部分。如果要在添加某些变量时强制键入String,则只需先添加一个空字符串:var myString = '' + a + b + c
。
这个会解决你的问题。