Я пытаюсь назначить движение трем переменным вне слушателя событий, но функция внутри моего слушателя событий даже не работает.Я тоже пытался проверить это так:
if (window.DeviceMotionEvent) {
console.log("devicemotion was defined");
};
Консоль записала текст, но не этот текст:
var x, y, z;
var interval;
var arr = {'data':[]};
var ON = false;
window.addEventListener("devicemotion", function(event){
x = event.accelerationIncludingGravity.x;
y = event.accelerationIncludingGravity.y;
z = event.accelerationIncludingGravity.z;
console.log(x,y,z)
}
,true);
Редактировать: Этот код скриптанаходится в нижней части HTML-файла, расположенного в каталоге шаблонов.HTML работает на Джанго.
Весь сценарий (некоторые закомментированы, потому что прослушиватель событий не работает)
<!--Clientside script-->
<script>
var x, y, z, alpha, gamma, beta;
var interval;
var arr = {'data':[]};
var ON = false;
window.addEventListener("devicemotion", function(event){
//x = event.accelerationIncludingGravity.x;
//y = event.accelerationIncludingGravity.y;
//z = event.accelerationIncludingGravity.z;
console.log(event)
}
,true);
window.addEventListener('deviceorientation', function(event){
alpha = event.alpha;
gamma = event.gamma;
beta = event.beta;
}
,true);
//Events that are running always
if (window.DeviceMotionEvent) {
console.log("devicemotion was defined");
};
if (window.DeviceOrientationEvent) {
console.log("GyroScope was defined");
};
$('input').on('click', function(){
if(ON==true){
ON=false;
} else {
ON=true;
}
});
//Main function,
//Creates list of sensor data.
function mainFunc(){ /*
if(ON=true){
interval = setInterval(() => {
arr['data'] = arr['data'].concat([x,y,z,alpha,gamma,beta]);
if(arr['data'].length >=30){
send();
console.log(arr);
}
console.log([x,y,z,alpha,gamma,beta]);
}, 200);
} else {
clearInterval(interval);
}
*/
}
//Ajax get request
//Checks for a response and animates the indicator accordingly.
function send(){
pack = arr['data'];
arr['data'].length = 0;
$.ajax({
url: "{% url 'detect' %}",
data: arr,
async: false,
success: function(data){
if (data==true){
$('#indicator').fadeIn('slow');
$('#indicator').fadeOut('slow');
}
}
})
};
</script>