为什么hashchange在jQueryMobile向后转换中触发两次?

为什么hashchange在jQueryMobile向后转换中触发两次?,jquery,events,jquery-mobile,navigation,hashchange,Jquery,Events,Jquery Mobile,Navigation,Hashchange,我迷路了。。。。我正在尝试在更改之前将Jquery移动转换重定向到页面上 这应该适用于向前和向后转换。虽然技术上如此,但我在向后转换时遇到了问题。第一个是有效的,之后每点击一次后退btn,我就会得到2+个后退转换 我已经排除了URL(现在只传递完整路径与路径和对象(如$(“#page”)),这不是它。现在我正在寻找另一个罪魁祸首,但找不到它 也许其他人看到了什么,或者可以给我一个提示。谢谢您的关注: 简要设置和注释: // hashchange listener - just to see w

我迷路了。。。。我正在尝试在更改之前将Jquery移动转换重定向到页面上

这应该适用于向前和向后转换。虽然技术上如此,但我在向后转换时遇到了问题。第一个是有效的,之后每点击一次后退btn,我就会得到2+个后退转换

我已经排除了URL(现在只传递完整路径与路径和对象(如$(“#page”)),这不是它。现在我正在寻找另一个罪魁祸首,但找不到它

也许其他人看到了什么,或者可以给我一个提示。谢谢您的关注:

简要设置和注释:

 // hashchange listener - just to see when hashchange fires
 $(window).on('hashchange', function(e, data){
     console.log("hashchange detected" );
     });

 // re-router
 $(document).on("pagebeforechange", function (e, data) {

       // block multiple events
       if(data.options.fromHashChange == true) {
           if(self.options.$blockMultiPbc == true) {
           console.log("blocked 1");
           self.options.$blockMultiPbc = false;
           return;
           }
        }

       // block $('#page') page-calls (triggered from trailing hashchange
       if(typeof data.toPage !== 'string') {
           console.log("blocked 2");
           return;
           }

        // redirect
       if(data.options.fromHashChange == true) {
            console.log("executing");
            // for hashchanges
            self.panelHash(e, data);
            } else {
                // for changepages
                self.panelTrans(e, data);
                } 
        });

       // panelHash function - here I reconfig data.options to redirect
       panelHash: function( e, data ) {

          // block multiple pagebeforechanges
          self.options.$blockMultiPbc = true;

          if ( some condition ) {
             console.log("MULTIVIEW");
             // tweak changepage options
             data.toPage = ...newULR (not $('object'))
             data.options.fromPage = ...new fromPage
             data.options.changeHash = true;
             data.options.reverse = true;
             console.log( newURL );
             } else {
                // JQM does this
                }
           }
以下是一个示例页面:

要重新部署,请单击第2页菜单、第3页菜单,清除控制台,单击浏览器后退一次,检查控制台(单次运行),再次单击浏览器后退,检查控制台(两次运行…)

问题
我不是在寻找一个解决方案——只是一些关于什么可能导致第二次向后转换触发两次的想法

谢谢你的建议

编辑
我在sript中添加的控制台越多,就越明显,第二个不需要的hashchange在短时间延迟后即将出现。我最初认为它与JQMsfake_onhashchange事件有关,但完全删除它并没有起到作用。继续搜索


EDIT2-找到了一个b-所以这不是我的脚本…呸…仍然欢迎提示:-)

好的。我想我找到了。这是pushstate处理程序中的一个bug

详细信息和可能的修复