2012-05-02 62 views
0

我是JavaScript新手,剛開始學習窗口方法。 我想寫這種方法來獲得一個新的窗口從屏幕的左端移動到右端。但是,代碼不起作用。爲什麼此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> 
+1

由於安全原因,您可能無法再執行此操作。 –

+0

希望這只是爲了您的個人學習。請不要在真實的網站上使用它。 – nico

回答

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); 

然而,正如丹尼爾A.指出,一些瀏覽器不允許客戶端腳本來移動窗口。如果它在瀏覽器中不起作用,則可以更改設置,以測試setInterval方法的工作原理。

+0

謝謝!這工作和意義:) –

相關問題