2016-03-18 41 views
0

我開始學習Javascript通過Youtube,而當我寫下這段代碼時,它說pageX是未定義的。我真的可以使用一個幫助。我正在研究一個捕獲屏幕上鼠標位置的函數。不要請求HTML,因爲它只是一種形式,沒有別的。Javascript e.pageX undefined

的Javascript:

document.onmousemove = pozicijaMisa(); 

應該是一個分配,而不是調用它和:

var mie = (navigator.appName == "Microsoft Internet Explorer")?true:false; 

if (!mie) { 
    document.captureEvents(Event.MOUSEMOVE); 
    //document.captureEvents(Event.MOUSEDOWN); 
} 

document.onmousemove = pozicijaMisa(); 
//document.onmousedown = misKliknut(); 
var misKliknut = 0; 
var tipkaStisnuta = 0; 
var misX = 0; 
var misY = 0; 

function pozicijaMisa(e) { 
    if (!mie) { 
     misX = e.pageX; 
     misY = e.pageY; 
    } else { 
     misX =event.clientX + document.body.scrollLeft; 
     misY =event.clientY + document.body.scrollTop; 
    } 
    document.forma.misx.value = misX; 
    document.forma.misy.value = misY; 
    return true; 
} 
+0

我建議像這樣的而不是過時的YouTube視頻:https://www.codecademy.com/learn/javascript – epascarello

回答

0

嗯,我會因爲他們教會了過時的做法

你的問題是找到一個不同的教程指定它返回到事件處理程序的內容。

document.onmousemove = pozicijaMisa; 
+0

從e.pageX部分去掉這個錯誤,但現在彈出這條線代碼: document.forma.misx.value = misX;說:java2.js:40未捕獲TypeError:無法設置未定義的屬性'值' –

+0

錯誤是什麼?你有沒有這種輸入的表單? – epascarello

+0

對不起,發現問題了,我拼錯了我的表單名稱; S感謝您的幫助:) –

1

您正在通過navigator進行客戶端檢測,這很脆弱。

它會幫助您更好地在Javascript中執行功能檢測而不是客戶端檢測。而不是看你是否使用IE瀏覽器,看看是否存在pageX(特別是因爲新版本的IE不使用pageX)。

document.addEventListener('mousemove', mousePosition); 
function mousePosition(e) { 
    var x = e['pageX'] || e.clientX; 
    var y = e['pageY'] || e.clientY; 
}