2016-07-22 135 views
0

我剛剛學習JavaScript,只是瞭解窗口對象。 我試圖做一個簡單的腳本,當按下其中一個箭頭鍵時,將瀏覽器窗口向一個方向移動10個像素。JavaScript - window.moveBy無法正常工作

我已經驗證了事件處理程序的工作原理,關鍵代碼是正確的,moveScreen()函數正在執行,並且其中的條件也起作用。 那麼爲什麼屏幕不會移動? 我已經在Firefox和Chrome中測試過。

function moveScreen(direction) { 
    'use strict'; 

    if (direction === 'up') window.moveBy(0, -10); 
    if (direction === 'right') window.moveBy(10, 0); 
    if (direction === 'down') window.moveBy(0, 10); 
    if (direction === 'left') window.moveBy(-10, 0); 
} 


function handleKeyDown(e) { 
    'use strict'; 

    e = e || window.event; 
    const key = e.keyCode; 

    switch (key) { 
     case 38: 
      moveScreen('up'); 
      break; 
     case 39: 
      moveScreen('right'); 
      break; 
     case 40: 
      moveScreen('down'); 
      break; 
     case 37: 
      moveScreen('left'); 
      break; 
    } 
} 


window.onload = function() { 
    'use strict'; 
    document.onkeydown = handleKeyDown; 
} 

這是HTML文件,它只是包含在體內的腳本:

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
</head> 
<body> 
    <script src="moveWindow.js"></script> 
</body> 
</html> 
+3

您只能移動您從另一頁面打開的彈出窗口。 – JJJ

回答

1

如果你看一下moveBy對MDN這裏MDN moveBy的描述,你會看到你正在嘗試爲可能不可能。

由於火狐7,它不再可能一個網站在瀏覽器中移動一個窗口,按以下規則:

  1. 您不能移動WASN」窗口或標籤t由window.open創建。
  2. 當窗口或選項卡位於具有多個選項卡的窗口中時,無法移動它。
0

答案很簡單:「你不能動,你還沒有創建自己的另一頁上的一個窗口」

謝謝Juhana。

所以我發現得到這個工作,最快的方法就是在瀏覽器中打開控制檯,打開HTML文件有:

window.open('moveWindow.html') 

如果打開一個新標籤,只需點擊並拖動窗口的標題遠離已經打開的窗口,專注於文檔,你們都很棒。