0

JavaScript と window.open メソッドに問題があります。

現在の時間に応じてポップアップのサイズを制御しようとしています。時間は高さを制御し、分 (最も近い 5 に四捨五入) は幅を制御します。

高さコントロールは正常に機能しており、正しい値に対応しています...ただし、幅は常に画面の 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)

現在持っているもの (サイズを実際のものに置き換えた後):

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 は推測し、これにより、先頭にゼロがある数値は 10 進数ではなく 8 進数として解析されます。

  2. ここでは「'」を使用しないでください: "'"+a+m+b+h+"'";. これは文字列を「より多くの」文字列にするのではなく、文字列の一部にするだけです。いくつかの変数を追加するときに文字列型を強制したい場合は、最初に空の文字列を追加してください: var myString = '' + a + b + c.

これで問題が解決します。

于 2012-08-26T22:27:02.507 に答える