Javascript函数在firefox中不起作用,但在chrome,safari,IE和edge

时间:2017-01-30 05:03:34

标签: javascript html firefox

有人能告诉我为什么这个功能不会在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>

3 个答案:

答案 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.pageXundefined,因此prevXundefined,则会导致您的功能无效并且似乎无法运行。

编辑: 看到您的更新后,它看起来就像是因为您正在收听的事件没有pageX。请参阅此处获取文档: https://developer.mozilla.org/en-US/docs/Web/Events/drag

这也可以帮助FireFox onDrag Pagex PageY always zero ;(

答案 2 :(得分:0)

不幸的是,firefox浏览器和W3C不支持此功能。其他浏览器会忽略此规范,而是使用Mousemove来解决此特定问题。但是,您可以使用ondragstartondragend来获取特定事件的坐标。