【问题标题】:Closing jQuery Mobile new popup cause page to refresh uselessly关闭 jQuery Mobile 新弹出窗口导致页面无用刷新
【发布时间】:2012-08-10 19:20:04
【问题描述】:

我正在使用带有 1.2.0 alpha 版本的新 jqm 弹出窗口,我的问题是当我使用 esc 键关闭弹出窗口或单击屏幕时,我调用弹出窗口的页面被刷新无用...这个刷新仅在我第一次关闭时发生。如果我重新打开并再次关闭弹出窗口,则页面不会刷新...

似乎由于某种原因 jqm 历史机制搞砸了....

这似乎不是一个内置功能,因为 jqm 演示页面中的任何弹出窗口都不会发生这种情况。

知道如何解决这个问题吗?

谢谢

艾蒂安

【问题讨论】:

  • 当当前 url 与导航堆栈不同步时,我也遇到过类似的问题。您会注意到 _handleHashChange 事件触发了“导航”事件 ($.mobile.pageContainer.trigger(navEvent);),并且预期的将 isDefaultPrevented 评估为 true 的侦听器不会被触发,因为它只绑定一次。根据我这周的时间,我可能会提交一个拉取请求。我会及时通知你。

标签: jquery-mobile


【解决方案1】:

我遇到了类似的问题,由于我不需要使用历史记录,因此我解决了它,像这样禁用全局弹出历史记录:

$.mobile.popup.prototype.options.history = false;

【讨论】:

  • 谢谢!!!这解决了我的问题!我不知道弹出窗口处理了历史记录。
【解决方案2】:

在使用 jQuery Mobile 1.4.5 在 IE11 上遇到类似问题时发现这篇文章

我发现我可以通过在我的 HTML 中声明带有 data-history="false" 属性的弹出窗口来防止在关闭弹出窗口时“重新加载”。

例如:

...

【讨论】:

    【解决方案3】:

    根据我的评论,这是该问题的临时解决方法。只需适当地绑定到导航事件并调用 preventDefault。这将防止重新加载页面。我最终绑定到 popupafterclose,只有当它被打开时:

      $('.my-popup-selector').on('popupafteropen', function () {
          $(this).one('popupafterclose', function () {
              $(window).one('navigate.popup', function (e) {
                  e.preventDefault();
              });
          });
      });
    

    【讨论】:

    • 我最终在 [data-role="popup"] 选择器的 popupafteropen 事件上绑定(实时)您的补丁,它解决了我所有应用程序弹出窗口的问题。非常感谢!
    【解决方案4】:

    我遇到了类似的问题,我使用history: false 修复了它:

    $("#selector").popup({ transition: 'slidedown', history: false, overlay: true });
    $("#selector").popup("open");
    

    【讨论】:

      【解决方案5】:

      data-history="false" 添加到弹出 div。因此,当弹出窗口关闭时,它不会重定向到另一个页面。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-19
        • 2012-06-03
        • 1970-01-01
        • 2017-02-05
        • 2012-07-09
        • 2011-05-15
        相关资源
        最近更新 更多