有人能告诉我为什么这个功能不会在Firefox中执行。除了这个之外,整个文件中的其余Javascript函数都能成功运行(它不会执行,控制台中不会出错)。我怀疑它是pageX
属性,但似乎并非如此。
var prevX = 0;
var i = 0;
var drgleft = 0;
var drgright = 0;
function sequence_1(event){
if(prevX == 0){
prevX = event.pageX;
return false;
}
//drag left
if(prevX > event.pageX){
console.log('dragged left');
drgleft++;
if(drgleft == 2){
drgleft = 0;
i--;
if(i < 0){
i = 30; //for optimization reasons, input the cache.length value manually (this avoids unnecessary errors in the console and laggy framerate as a result).
}
document.getElementById("TheBigOne").src = cache[i].src; //use console.log(i); as a method of verifying that the code is executing correctly
}
}
else if(prevX < event.pageX){
console.log('dragged right');
drgright++;
if(drgright == 2){
drgright = 0;
i++;
if(i > 30){ //for optimization reasons, input the cache.length value manually (this avoids unnecessary errors in the console and laggy framerate as a result).
i=0;
}
document.getElementById("TheBigOne").src = cache[i].src;
}
}
else{
}
prevX = event.pageX
}
在我的第一篇文章中,我没有包含调用该函数的相关HTML代码,为此我道歉并将在下面实现。
<!DOCTYPE html>
<html>
<body>
<div class="The_main_event" draggable = "true" ondrag="sequence_1(event)" id = "GD">
<img src="file:///C:/Users/Harry/Desktop/Website/Web_aeroplane/Web%20Test.0031.png" id="TheBigOne">
</div>
</body>
</html>
答案 0 :(得分:1)
在Windows上打开Firefox的调试器( Ctrl + Shift + S )在第一行设置断点功能体。 event
的内容将是可检查的。您可以单步执行该功能(Windows中的 F10 )以查看正在发生的事情。如果事件不是直接来自鼠标/触摸,则可能没有pageX
属性,因此没有效果。
答案 1 :(得分:0)
是UIEvent还是MouseEvent?
https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/pageX
https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/pageX
UIEvents不是标准的,上面链接的文档将Firefox视为未知的兼容性。
我猜你什么时候说它不会跑,你的意思是,它没有按照你的预期工作。看起来在你的情况下,它要么返回false,要么除了尝试更新prevX
之外什么都不做。如果event.pageX
为undefined
,因此prevX
为undefined
,则会导致您的功能无效并且似乎无法运行。
编辑: 看到您的更新后,它看起来就像是因为您正在收听的事件没有pageX。请参阅此处获取文档: https://developer.mozilla.org/en-US/docs/Web/Events/drag
答案 2 :(得分:0)
不幸的是,firefox浏览器和W3C不支持此功能。其他浏览器会忽略此规范,而是使用Mousemove
来解决此特定问题。但是,您可以使用ondragstart
和ondragend
来获取特定事件的坐标。