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 回答