0

私は JavaScript を初めて使用し、ウィンドウ メソッドの学習を始めたばかりです。このメソッドを記述して、新しいウィンドウを画面の左端から右端に移動させたいと思いました。ただし、コードは機能しません。

どこが間違っているのか誰か教えてください。

    <!doctype html>
<html>
<title>Avoid Window</title>
<head>
<script type="text/javascript">
    var MovingWindow;   

    function CreateWindow()
    {
        MovingWindow = window.open('','MovingWindow','width=100,height=100,menubar=0,toolbar=0,location=0,resizeable=0,status=0');
        window.MovingWindow.moveTo(0,0);
        while( window.MovingWindow.screenX < window.screen.width - window.MovingWindow.width)
        {

            window.MovingWindow.moveBy(1,0);
        }

    }
</script>
</head>
<body>
<h1>Avoid Window</h1>
<p> Click on the button below to create a window which moves from one end of the screen to the other end of the screen</p>
<input type="Button" onClick="CreateWindow();" value="Create Window"/>
<input type="Button" onClick="MoveWindow();" value="Move Window"/>
</body>
</html>
4

1 に答える 1

2

ループでアニメーションを作成することはできません。関数が実行されている限り、ユーザーインターフェイスは更新されません。関数はウィンドウの座標を変更し、関数が終了するとウィンドウは最終的な位置に再描画されます。

このメソッドを使用してwindow.setInterval、ウィンドウを移動できる間隔を開始します。

var timer = window.setInterval(function(){
  if (window.MovingWindow.screenX < window.screen.width - window.MovingWindow.width) {
    window.MovingWindow.moveBy(1,0);
  } else {
    window.clearInterval(timer);
  }
}, 100);

ただし、Daniel A.が指摘したように、一部のブラウザではクライアントスクリプトでウィンドウを移動できません。ブラウザで機能しない場合は、setIntervalアプローチが機能することをテストするためだけに設定を変更できます。

于 2012-05-02T16:13:37.690 に答える