我有一个简单的JavaScript代码(在元素上切换一个类),当地址栏在页面上可见时,它无法在移动设备(Android chrome)上运行。

该代码是一个菜单切换按钮,“产品”菜单旁边的+按钮:

好的,所以它不能像这样工作:

javascript - 当页面上显示地址栏时,JavaScript代码在移动设备上不起作用?-LMLPHP

但是,只要我向下滚动一点并隐藏移动地址栏,它就会起作用! :

javascript - 当页面上显示地址栏时,JavaScript代码在移动设备上不起作用?-LMLPHP

到底是怎么回事?我很困惑。为什么显示地址栏会更改此代码的工作方式?

这是代码:

m.find( '.menu-dropdown-toggle' ).click(function(e){
            e.preventDefault();
            var $li = $( this ).parents( 'li' ).first();
            if ($li.hasClass( 'toggle-closed' ) || ! ($li.hasClass( 'toggle-open' ) || $li.hasClass( 'current-menu-item' ) || $li.hasClass( 'current_page_ancestor' ) || $li.hasClass( 'current_page_item' ) || $li.hasClass( 'current_page_parent' ))) {
                $li.removeClass( 'toggle-closed' ).addClass( 'toggle-open' );
            } else {
                $li.removeClass( 'toggle-open' ).addClass( 'toggle-closed' );
            }

            return false;
        });

此外,这在其他移动网站上也可以正常使用,尤其是只有这个网站才具有地址栏可见错误(例如http://beautiful.dtbaker.net/在移动网站上可以正常运行)。

最佳答案

该事件被触发两次。第一个触发器打开菜单,第二个触发器关闭菜单。这并不能解释为什么地址栏可见时为什么会发生这种情况,但这似乎是一些调试所表明的。

可能另一个脚本可能以编程方式执行此操作,但我没有进行过如此广泛的调试。

您可以使用反跳来确保操作仅在特定时间内触发一次,这样可以解决问题,而无需实际解决原因。

关于javascript - 当页面上显示地址栏时,JavaScript代码在移动设备上不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37959900/

10-12 12:35