วิธีรับตำแหน่งของเมาส์โดยไม่มีเหตุการณ์ (โดยไม่เลื่อนเมาส์)


286

เป็นไปได้หรือไม่ที่จะได้ตำแหน่งของเมาส์ด้วย JavaScript หลังจากที่โหลดหน้าเว็บโดยไม่มีเหตุการณ์การเคลื่อนไหวของเมาส์ (โดยไม่เลื่อนเมาส์)?


61
ไม่มีอะไรผิดปกติกับเหตุการณ์ mousemove ในบางกรณีผู้ใช้ไม่ต้องเลื่อนเม้าส์ ขอบคุณสำหรับคำตอบ.
Norbert Tamas

2
Norbert Tamas คำตอบของ @ SuperNova (ซึ่งไม่ได้เพิ่มจนถึงปีนี้) แสดงให้เห็นว่า mouseenter ทำงานได้ดีสำหรับสิ่งนี้เพราะมันเกิดจากการโหลดหน้าเว็บ (หากเมาส์อยู่ในวิวพอร์ต) มันใช้งานไม่ได้ในปี 2010 หรือเป็นเพียงที่ไม่มีใครคิดลองทำ
ปีเตอร์แฮนเซน

@CrescentFresh ในบางกรณี (เช่น userscripts) คุณไม่ต้องการชะลอเบราว์เซอร์ด้วยการเพิ่มmousemoveกิจกรรมมากมาย
Tomáš Zato - Reinstate Monica

เป็นไปได้ใน FF ด้วยเม้าส์ แต่ไม่ได้อยู่ใน IE และ Chrome
Elad

หรือในเกมกล้องของคุณจะขยับไปมารอบ ๆ โลกของเกมและตัวละครมองเมาส์ (สไตล์ปืนจากบนลงล่าง) แต่ถ้าผู้ใช้ไม่ขยับเมาส์ คุณพึ่งพาเฉพาะกับ moveemove อย่างไรก็ตามมันไม่ใช่เรื่องใหญ่เราแค่เก็บ coords "โลก" ของตัวชี้และให้ผู้คนสอบถาม
kamranicus

คำตอบ:


336

คำตอบจริง: ไม่มันเป็นไปไม่ได้

ตกลงฉันเพิ่งคิดวิธี วางซ้อนหน้าของคุณด้วย div ที่ครอบคลุมทั้งเอกสาร ภายในนั้นให้สร้าง (พูด) <a>องค์ประกอบ2,000 x 2,000 (เพื่อให้:hoverคลาสเทียมใช้งานได้ใน IE 6 ดู) ขนาดแต่ละพิกเซล สร้าง:hoverกฎCSS สำหรับ<a>องค์ประกอบเหล่านั้นที่เปลี่ยนแปลงคุณสมบัติ (สมมุติว่าfont-family) ในตัวจัดการโหลดของคุณวนไปรอบ<a>ๆ องค์ประกอบทั้ง 4 ล้านชิ้นตรวจสอบcurrentStyle/ getComputedStyle()จนกว่าคุณจะพบชิ้นส่วนที่มีตัวอักษรโฮเวอร์ ประมาณค่ากลับจากองค์ประกอบนี้เพื่อรับพิกัดภายในเอกสาร

NB ไม่ทำเช่นนี้


92
ฮ่า - ในบางจุดที่คุณควร google ไปรอบ ๆ และดูว่าคุณสามารถคิดออกว่าหลาย ๆ คนได้ใช้งานจริงนี้
Pointy

6
ที่จริงแล้วมันสามารถใช้งานได้โดยไม่ต้องโหลด CPU มาก (ฉันคิดว่าฉันไม่ได้ทำการทดสอบ) ใน Dom พร้อมสร้างองค์ประกอบ <a> ด้วย javascript ให้ใช้ตำแหน่งเมาส์จากนั้นลบองค์ประกอบ <a> ทั้งหมด บนเมาส์คุณควรมีฟังก์ชั่นอื่น ๆ เพื่อรับตำแหน่งเมาส์ อย่างไรก็ตามนี่มันเฮฮา
machineaddict

21
บางทีนี่อาจเป็นประโยชน์กับการค้นหาแบบไบนารีหรือไม่ วนรอบการสร้าง<a>องค์ประกอบที่ครอบคลุมสี่เหลี่ยมที่กำหนด (โดยใช้ตำแหน่งที่แน่นอนของ<img>องค์ประกอบที่มีขนาดฉันคิดว่า) การลดขนาดสี่เหลี่ยมในแต่ละครั้ง ใช่มันไร้สาระ แต่ไม่สามารถรับข้อมูลนี้ได้ก่อนที่จะวางเมาส์ครั้งแรก
Darius Bacon

29
stackoverflow.com/a/8543879/27024กล่าวว่าโฮเวอร์ไม่ทำงานจนกว่าจะเลื่อนเมาส์เป็นครั้งแรก นี่เกียดแผนการนี้
Darius Bacon

4
@DariusBacon: ว่าคำตอบที่เชื่อมโยงดูเหมือนจะไม่ถูกต้อง: jsbin.com/utocax/3 ใช่วิธีนี้อาจใช้ได้ในบางสถานการณ์
Tim Down

121

แก้ไข 2020: สิ่งนี้ไม่ทำงานอีกต่อไป ดูเหมือนว่าผู้ขายเบราว์เซอร์จะแก้ไขปัญหานี้ เนื่องจากเบราว์เซอร์ส่วนใหญ่พึ่งพาโครเมียมจึงอาจอยู่ในแกนกลาง

คำตอบเก่า: คุณยังสามารถขอวาง mouseenter ได้ (เหตุการณ์นี้เกิดขึ้นหลังจากการโหลดหน้าเว็บอีกครั้งเมื่อผู้ให้ข้อมูลอยู่ในหน้า) การขยายโค้ดที่เสียหายควรทำตามขั้นตอนดังนี้:

var x = null;
var y = null;
    
document.addEventListener('mousemove', onMouseUpdate, false);
document.addEventListener('mouseenter', onMouseUpdate, false);
    
function onMouseUpdate(e) {
  x = e.pageX;
  y = e.pageY;
  console.log(x, y);
}

function getMouseX() {
  return x;
}

function getMouseY() {
  return y;
}

นอกจากนี้คุณยังสามารถตั้งค่า x และ y เป็นโมฆะใน mouseleave-event ดังนั้นคุณสามารถตรวจสอบว่าผู้ใช้อยู่ในหน้าของคุณด้วยเคอร์เซอร์หรือไม่


11
นี่น่าจะเป็นคำตอบเดียวที่มีประโยชน์อย่างแท้จริงที่นี่ซึ่งดูแปลก ๆ อันที่จริง (ใน Firefox ล่าสุด, Chrome และ IE11) mouseenter จะยิงหน้าโหลดและให้พิกัดที่ถูกต้อง พฤติกรรมของเบราว์เซอร์ในพื้นที่นี้มีการเปลี่ยนแปลงเพียงไม่กี่ปีที่ผ่านมาหรือไม่
ปีเตอร์แฮนเซน

3
อันที่จริง "mouseenter" ดูเหมือนจะไม่เพิ่มมูลค่าใด ๆ ฉันทดสอบด้วย jsfiddle ต่อไปนี้ใน Chrome และ IE และพวกมันจะไม่แสดง cordinates จนกว่าคุณจะวางเมาส์บนเอกสารด้านใน (แผงผลลัพธ์): jsfiddle.net/xkpd784o/1
Mariano Desanze

1
@Proton: เลื่อนเมาส์ของคุณไปที่แผงผลลัพธ์ไปยังพื้นที่ของหน้าผลลัพธ์ก่อนหน้าโหลดเต็มแล้วและไม่ขยับไปกว่า หลังจากโหลดหน้าเพจจะรู้ตำแหน่งของเมาส์ทันที ไม่จำเป็นต้องมีการเคลื่อนไหวของเมาส์ ดังนั้นการวางเมาส์พ้อยท์ก็เกิดขึ้นเมื่อเพจโหลดและเมาส์อยู่ในพื้นที่เอกสาร นั่นคือสิ่งที่ OP ต้องการ แต่เดิม ไม่มีใครให้คำตอบนี้
SuperNova

1
การเพิ่มที่อาจมีประโยชน์คือการเพิ่มฟังก์ชั่นสำหรับmouseleaveเหตุการณ์ที่ตั้งค่าxและyกลับไปที่nullหรือ'undefined'
rtpax

2
chrome 68 ที่ใช้ jsfiddel ด้านบนการแจ้งเตือนจะเกิดขึ้นเมื่อเลื่อนเมาส์ครั้งแรกและไม่โหลดแม้ว่าเมาส์จะถูกย้ายไปยังพื้นที่ที่แสดงผลก่อนที่หน้าจะโหลดเสร็จ
Junvar

84

สิ่งที่คุณสามารถทำได้คือสร้างตัวแปรสำหรับxและyพิกัดเคอร์เซอร์ของคุณอัปเดตเมื่อใดก็ตามที่เมาส์เคลื่อนย้ายและเรียกใช้ฟังก์ชันตามช่วงเวลาเพื่อทำสิ่งที่คุณต้องการด้วยตำแหน่งที่เก็บไว้

ข้อเสียของหลักสูตรนี้คือต้องมีการเคลื่อนย้ายเมาส์ครั้งแรกอย่างน้อยหนึ่งครั้งเพื่อให้สามารถใช้งานได้ ตราบใดที่เคอร์เซอร์อัปเดตตำแหน่งอย่างน้อยหนึ่งครั้งเราสามารถค้นหาตำแหน่งได้โดยไม่คำนึงว่ามันจะเคลื่อนไหวอีกครั้งหรือไม่

var cursorX;
var cursorY;
document.onmousemove = function(e){
    cursorX = e.pageX;
    cursorY = e.pageY;
}
setInterval(checkCursor, 1000);
function checkCursor(){
    alert("Cursor at: " + cursorX + ", " + cursorY);
}

โค้ดก่อนหน้านี้อัปเดตหนึ่งครั้งต่อวินาทีด้วยข้อความว่าเคอร์เซอร์อยู่ที่ใด ฉันหวังว่านี่จะช่วยได้.


18
คุณอ่านหัวข้อของโพสต์นี้หรือไม่? OP ถามถึงวิธีรับพิกัดของเมาส์โดยไม่ต้องใช้เหตุการณ์ แต่โพสต์ของคุณแนะนำให้ใช้เหตุการณ์ onmousemove
jake

53
@ jake ถึงแม้ว่า OP จะขอวิธีการที่ไม่ใช่เหตุการณ์โดยเฉพาะคำตอบนี้เป็นประโยชน์ต่อผู้อื่นที่มาที่นี่เพื่อค้นหาคำตอบและอาจเป็นวิธีแก้ปัญหา นอกจากนี้ฉันจะพิจารณาคำตอบนี้บางส่วนในหัวข้อตั้งแต่เท่าที่ฉันรู้นี่เป็นวิธีที่ดีที่สุดในการรับตำแหน่งเคอร์เซอร์ในเวลาใดก็ตามโดยไม่ต้องใช้กิจกรรมโดยตรง ที่กล่าวว่าคำตอบอาจได้รับการพูดมากขึ้นตามแนวของการระบุความจริงและเสนอวิธีการเพื่อหลีกเลี่ยงการ nitpicking ในความคิดเห็น
jpeltoniemi

2
@Pichan มันไม่ได้ประโยชน์อะไรเลยเพราะฉันกำลังมองหาวิธีเติมcursorX/Yตัวแปรเหล่านั้นก่อนที่จะมีเหตุการณ์ใดเกิดขึ้น
polkovnikov.ph

ผู้ใช้งานน้อยมากที่ไม่เคยชินกับเหตุการณ์เมาส์ไฟ
SuperUberDuper

1
ระวังอาจเป็นค่าใช้จ่ายเพื่อให้ผู้ฟัง mousemove รอบ ๆ ฉันจะแนะนำให้สร้างผู้ฟังขึ้นมาใหม่ในช่วงเวลานั้นและทำลายผู้ฟังหลังจากที่คุณได้รับพิกัด
KRB

10

คุณสามารถลองสิ่งที่คล้ายกับสิ่งที่ Tim Down แนะนำ - แต่แทนที่จะมีองค์ประกอบสำหรับแต่ละพิกเซลบนหน้าจอสร้างเพียง 2-4 องค์ประกอบ (กล่อง) และเปลี่ยนตำแหน่งความกว้างความสูงแบบไดนามิกเพื่อแบ่งตำแหน่งที่เป็นไปได้บนหน้าจอ ด้วย 2-4 ซ้ำการค้นหาตำแหน่งเมาส์จริงอย่างรวดเร็ว

ตัวอย่างเช่น - องค์ประกอบแรกใช้ครึ่งหน้าจอด้านขวาและซ้ายหลังจากนั้นครึ่งบนและล่าง เมื่อถึงตอนนี้เรารู้แล้วว่าเมาส์อยู่ตำแหน่งใดในสี่หน้าจอสามารถทำซ้ำได้ - ค้นพบว่าพื้นที่ใดในไตรมาสนี้ ...


9

คำตอบของ @Tim Down ไม่แสดงหากคุณแสดง<a>องค์ประกอบ2,000 x 2,000 :

ตกลงฉันเพิ่งคิดวิธี วางซ้อนหน้าของคุณด้วย div ที่ครอบคลุมทั้งเอกสาร ภายในนั้นให้สร้าง (พูด) องค์ประกอบ 2,000 x 2,000 (เพื่อให้: โฮเวอร์ pseudo-class จะทำงานใน IE 6, ดู), ขนาดแต่ละพิกเซล 1 สร้าง CSS: กฎโฮเวอร์สำหรับองค์ประกอบเหล่านั้นที่เปลี่ยนแปลงคุณสมบัติ (สมมติว่าเป็นแบบอักษรตระกูล) ในตัวจัดการโหลดของคุณวนไปรอบ ๆ องค์ประกอบทั้ง 4 ล้านชิ้นตรวจสอบ currentStyle / getComputedStyle () จนกระทั่งคุณพบหนึ่งตัวที่มีแบบอักษรโฮเวอร์ ประมาณค่ากลับจากองค์ประกอบนี้เพื่อรับพิกัดภายในเอกสาร

NB อย่าทำเช่นนี้

แต่คุณไม่จำเป็นต้องแสดงองค์ประกอบ 4 ล้านรายการพร้อมกันแทนที่จะใช้การค้นหาแบบไบนารี เพียงใช้ 4 <a>องค์ประกอบแทน:

  • ขั้นตอนที่ 1: พิจารณาทั้งหน้าจอเป็นพื้นที่ค้นหาเริ่มต้น
  • ขั้นตอนที่ 2: แยกพื้นที่ค้นหาออกเป็นสี่เหลี่ยมผืนผ้า 2 x 2 = 4 <a>องค์ประกอบ
  • ขั้นตอนที่ 3: การใช้getComputedStyle()ฟังก์ชั่นกำหนดว่าเมาส์โฉบสี่เหลี่ยมผืนผ้าใด
  • ขั้นตอนที่ 4: ลดพื้นที่การค้นหาเป็นสี่เหลี่ยมนั้นและทำซ้ำจากขั้นตอนที่ 2

วิธีนี้คุณจะต้องทำซ้ำขั้นตอนเหล่านี้สูงสุด 11 ครั้งเนื่องจากหน้าจอของคุณไม่กว้างเกิน 2048px

ดังนั้นคุณจะสร้าง<a>องค์ประกอบสูงสุด 11 x 4 = 44

หากคุณไม่จำเป็นต้องกำหนดตำแหน่งเมาส์ให้ตรงกับพิกเซล แต่บอกว่าแม่นยำ 10px ก็โอเค คุณจะทำซ้ำขั้นตอนมากที่สุด 8 ครั้งดังนั้นคุณจะต้องวาด<a>องค์ประกอบสูงสุด 8 x 4 = 32

การสร้างและทำลาย<a>องค์ประกอบนั้นไม่ใช่การแสดงเนื่องจาก DOM นั้นช้า แต่คุณก็สามารถนำมาใช้ครั้งแรก 4 <a>องค์ประกอบและเพียงแค่ปรับของพวกเขาtop, left, widthและheightในขณะที่คุณห่วงผ่านขั้นตอน

ทีนี้การสร้าง 4 <a>ก็เกินไปเช่นกัน คุณสามารถใช้<a>องค์ประกอบเดียวกันซ้ำได้เมื่อทำการทดสอบgetComputedStyle()ในแต่ละสี่เหลี่ยมผืนผ้า ดังนั้นแทนที่จะแยกการค้นหาพื้นที่ออกเป็น<a>องค์ประกอบ2 x 2 เพียงนำ<a>องค์ประกอบเดียวมาใช้ใหม่โดยการย้ายด้วยคุณสมบัติtopและleftสไตล์

ดังนั้นสิ่งที่คุณต้องมีก็คือการ<a>เปลี่ยนองค์ประกอบwidthและheightสูงสุด 11 ครั้งและเปลี่ยนtopและleftสูงสุด 44 ครั้งและคุณจะได้ตำแหน่งเมาส์ที่แน่นอน


3

ทางออกที่ง่ายที่สุด แต่ไม่แม่นยำ 100%

$(':hover').last().offset()

ผลลัพธ์: {top: 148, left: 62.5}
ผลลัพธ์ขึ้นอยู่กับขนาดองค์ประกอบที่ใกล้ที่สุดและส่งคืนundefinedเมื่อผู้ใช้เปลี่ยนแท็บ


สำหรับฉันมันกลับมาundefinedโดยไม่คำนึงถึง คุณสามารถอธิบายวิธีการใช้สิ่งนี้ได้อย่างละเอียดหรือไม่?
tresf

มันจะกลับมาundefinedเมื่อเคอร์เซอร์ไม่ได้วางองค์ประกอบใด ๆ (หรือเมื่อเบราว์เซอร์เสียโฟกัส) คุณอาจจำเป็นต้องกำหนดช่วงเวลาการทดสอบถ้าคุณกำลังจากคอนโซล ..
StefansArya

ขอบคุณ setTimeoutทำงาน ฉันกำลังใช้ jsfiddle และคุณพูดถูกมันไม่เคยโดนเหตุการณ์โฮเวอร์เพราะวาด DOM ในแต่ละครั้งที่คุณคลิกเล่น ฉันขอแนะนำให้เพิ่มคำแนะนำนี้ให้กับผู้อื่น
tresf

ฉันไม่ต้องการตำแหน่งเมาส์ที่แม่นยำ แต่ฉันแค่อยากรู้ว่าเมาส์นั้นสุดโต่งหรือสุดขีดเหลือฟังก์ชั่นโดยไม่มีวัตถุเหตุการณ์ดังนั้นโซลูชันของคุณทำงานในกรณีของฉัน .. ขอขอบคุณคุณ
Swap-IOS-Android

2

ฉันจินตนาการว่าคุณอาจมีเพจระดับบนที่มีตัวจับเวลาและหลังจากเวลาที่กำหนดหรืองานเสร็จสมบูรณ์คุณสามารถส่งต่อผู้ใช้ไปยังหน้าใหม่ ตอนนี้คุณต้องการตำแหน่งเคอร์เซอร์และเนื่องจากกำลังรออยู่จึงไม่จำเป็นต้องแตะเมาส์ ดังนั้นติดตามเมาส์บนหน้าหลักโดยใช้กิจกรรมมาตรฐานและส่งค่าสุดท้ายไปยังหน้าใหม่ในตัวแปร get หรือ post

คุณสามารถใช้รหัสของ JHarding บนหน้าพาเรนต์ของคุณเพื่อให้ตำแหน่งล่าสุดพร้อมใช้งานในตัวแปรส่วนกลาง:

var cursorX;
var cursorY;
document.onmousemove = function(e){
    cursorX = e.pageX;
    cursorY = e.pageY;
}

สิ่งนี้จะไม่ช่วยผู้ใช้ที่นำทางไปยังหน้านี้ด้วยวิธีอื่นที่ไม่ใช่เพจระดับบนของคุณ


1

ฉันใช้การค้นหาแนวนอน / แนวตั้ง (ก่อนอื่นให้ div ที่เต็มไปด้วยลิงค์แนวตั้งจัดเรียงในแนวนอนจากนั้นทำการ div ที่เต็มไปด้วยลิงค์แนวนอนที่จัดเรียงในแนวตั้งและเพียงแค่ดูว่าอันใดมีสถานะโฮเวอร์) มันทำงานได้ค่อนข้างเร็ว น่าเศร้าที่ใช้งานไม่ได้กับ Chrome 32 บน KDE

jsfiddle.net/5XzeE/4/


เห็นได้ชัดว่าเทคนิคเหล่านี้ใช้งานไม่ได้อีกต่อไปเว้นแต่จะมีการย้ายเมาส์อย่างชัดเจนโดยผู้ใช้ :(
trusktr

1

คุณไม่ต้องเลื่อนเมาส์เพื่อรับตำแหน่งของเคอร์เซอร์ สถานที่นอกจากนี้ยังมีรายงานเกี่ยวกับเหตุการณ์อื่น ๆ กว่าmousemove นี่คือเหตุการณ์คลิกเป็นตัวอย่าง:

document.body.addEventListener('click',function(e)
{
    console.log("cursor-location: " + e.clientX + ',' + e.clientY);
});

1

การตอบคำถามของ @ SuperNova ต่อไปนี้เป็นวิธีการใช้คลาส ES6 ที่ช่วยให้บริบทนั้นthisถูกต้องในการติดต่อกลับ:

class Mouse {
  constructor() {
    this.x = 0;
    this.y = 0;
    this.callbacks = {
      mouseenter: [],
      mousemove: [],
    };
  }

  get xPos() {
    return this.x;
  }

  get yPos() {
    return this.y;
  }

  get position() {
    return `${this.x},${this.y}`;
  }

  addListener(type, callback) {
    document.addEventListener(type, this); // Pass `this` as the second arg to keep the context correct
    this.callbacks[type].push(callback);
  }

  // `handleEvent` is part of the browser's `EventListener` API.
  // https://developer.mozilla.org/en-US/docs/Web/API/EventListener/handleEvent
  handleEvent(event) {
    const isMousemove = event.type === 'mousemove';
    const isMouseenter = event.type === 'mouseenter';

    if (isMousemove || isMouseenter) {
      this.x = event.pageX;
      this.y = event.pageY;
    }

    this.callbacks[event.type].forEach((callback) => {
      callback();
    });
  }
}

const mouse = new Mouse();

mouse.addListener('mouseenter', () => console.log('mouseenter', mouse.position));
mouse.addListener('mousemove', () => console.log('mousemove A', mouse.position));
mouse.addListener('mousemove', () => console.log('mousemove B', mouse.position));


1

นี่คือทางออกของฉัน มันส่งออกwindow.currentMouseXและwindow.currentMouseYคุณสมบัติที่คุณสามารถใช้ที่ใดก็ได้ มันใช้ตำแหน่งขององค์ประกอบที่วนเวียนอยู่ (ถ้ามี) เริ่มต้นและหลังจากนั้นฟังการเคลื่อนไหวของเมาส์เพื่อตั้งค่าที่ถูกต้อง

(function () {
    window.currentMouseX = 0;
    window.currentMouseY = 0;

    // Guess the initial mouse position approximately if possible:
    var hoveredElement = document.querySelectorAll(':hover');
    hoveredElement = hoveredElement[hoveredElement.length - 1]; // Get the most specific hovered element

    if (hoveredElement != null) {
        var rect = hoveredElement.getBoundingClientRect();
        // Set the values from hovered element's position
        window.currentMouseX = window.scrollX + rect.x;
        window.currentMouseY = window.scrollY + rect.y;
    }

    // Listen for mouse movements to set the correct values
    document.addEventListener('mousemove', function (e) {
        window.currentMouseX = e.pageX;
        window.currentMouseY = e.pageY;
    });
}())

Composr CMSที่มา: https://github.com/ocproducts/composr/commit/a851c19f925be20bc16bfe016be42924989f262e#diff-b162dc9c35a97618a96748639ff41251R1202


0
var x = 0;
var y = 0;

document.addEventListener('mousemove', onMouseMove, false)

function onMouseMove(e){
    x = e.clientX;
    y = e.clientY;
}

function getMouseX() {
    return x;
}

function getMouseY() {
    return y;
}

14
สิ่งนี้ยังไม่ต้องการให้ผู้ใช้เลื่อนเมาส์หรือไม่?
พอล Hiemstra

0

ฉันคิดว่าฉันอาจมีทางออกที่สมเหตุสมผลโดยไม่ต้องนับ divs และ pixels .. lol

เพียงใช้เฟรมภาพเคลื่อนไหวหรือช่วงเวลาของฟังก์ชั่น คุณจะต้องใช้เหตุการณ์เมาส์เพียงครั้งเดียวเพื่อเริ่มต้น แต่ในทางเทคนิคแล้วคุณวางตำแหน่งนี้ตามที่คุณต้องการ

โดยพื้นฐานแล้วเรากำลังติดตามตัวจำลองหุ่นตลอดเวลาโดยไม่มีการเคลื่อนไหวของเมาส์

// create a div(#mydiv) 1px by 1px set opacity to 0 & position:absolute;

ด้านล่างเป็นตรรกะ ..

var x,y;


$('body').mousemove(function( e ) {

    var x = e.clientX - (window.innerWidth / 2);
    var y = e.clientY - (window.innerHeight / 2);
 }


function looping (){

   /* track my div position 60 x 60 seconds!
      with out the mouse after initiation you can still track the dummy div.x & y
      mouse doesn't need to move.*/

   $('#mydiv').x = x;    // css transform x and y to follow 
   $('#mydiv)'.y = y;

   console.log(#mydiv.x etc)

   requestAnimationFrame( looping , frame speed here);
}  
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.