Воспроизвести движение мыши с помощью JavaScript
Я недавно задал вопрос о записи мыши. Теперь мне нужно выяснить, как его перезаписать.
Недавний вопрос: https://stackru.com/questions/8129723/record-mouse-movement-with-javascript
Я буду использовать PHP для создания идентичной копии текущей страницы, а затем вставлю в нее сценарий воспроизведения. Скрипт добавит и передвинет абсолютное положение изображения в соответствии с несколькими x и y кординатами относительно времени (чтобы проиллюстрировать движение мыши).
Есть ли хорошие методы (лучше, чем ниже) для воспроизведения нескольких движений мыши?
<input style="width:100%" type="text" name="onlyforstackru1" value="0" size="4"><br>
<input style="width:100%" type="text" name="onlyforstackru2" value="0" size="4">
<script>
// I want this (a very long array with x-cordinates, y-cordinates and time from pageload)
var very_long_array = [1,2,1000,2,22,2000,3,33,3645,4,44,3456];
// To become the same as this
setTimeout("document.Show.onlyforstackru1.value = 1;document.Show.onlyforstackru2.value = 11;",100)
setTimeout("document.Show.onlyforstackru1.value = 2;document.Show.onlyforstackru2.value = 22;",200)
setTimeout("document.Show.onlyforstackru1.value = 3;document.Show.onlyforstackru2.value = 33;",364)
setTimeout("document.Show.onlyforstackru1.value = 4;document.Show.onlyforstackru2.value = 44;",453)
// in the real script it will be moving around an image instead...
</script>
1 ответ
Решение
var dataList = [ 1, 2, 1000, 2, 22, 2000 ], // the long big array
preTime = 0;
function run() {
var parts = dataList.splice( 0, 3 ), // after splice, dataList will be auto updated
nowTime;
if ( parts.length == 3 ) {
nowTime = parts[ 2 ];
setTimeout( function() {
replay( parts[ 0 ], parts[ 1 ] ); // x = parts[ 0 ], y = parts[ 1 ]
preTime = nowTime;
// continue run next replay
run();
}, nowTime - preTime );
}
}
function replay( x, y ) {
// do something with x, y;
// document.Show.onlyforstackru1.value = x;
// document.Show.onlyforstackru2.value = y;
}
// start
run();
Просто используйте setTimeout для выполнения задачи, вам не нужно писать каждую задачу как инструкцию:-)