什么会使Meteor应用程序停止滚动?

时间:2015-01-28 18:23:23

标签: meteor reactive-programming

任何浏览器。所有其他功能正常运行。我可以遍历路线,打开模态,下拉,操纵集合......一切正常。

但在某些时候,浏览器将不再滚动。在任何观点。除非我刷新浏览器窗口。然后滚动恢复正常。

可能是什么原因引起的?为什么刷新页面可以解决问题?有没有一种方法可以在头部上方产生反应?

1 个答案:

答案 0 :(得分:3)

这可能是因为在没有正确关闭它的情况下导航离开(Bootstrap?)模式。

当您在HTML5框架中显示模式时,它们通常会显示背景(某种全屏变灰组件)并禁用滚动以模拟桌面体验。

您可以使用简单的iron:router模式解决此问题,如果您不使用此软件包,请确保在您离开可能显示模式的页面时执行相应的代码。

客户端/视图/模态/ modal.html

<template name="modal">
  <div id="modal" class="modal fade">
    ...
  </div>
</template>

<template name="main">
  {{> modal}}
  <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal">
    Show Modal
  </button>
</template>

client / config / router.js:

// define the plugin
Iron.Router.plugins.hideBootstrapModalOnStop=function(router,options){
  router.onStop(function(){
    // hide modal backdrop on route change
    $(".modal-backdrop").remove();
    // remove modal-open state on body
    $("body").removeClass("modal-open");
  });
};

// activate the plugin
Router.plugin("hideBootstrapModalOnStop");

HTML body标签上设置的.modal-open类是在设置时禁用滚动的类,所以当我们在可能显示模式时离开页面时确保删除该类,我们防止这种奇怪的意外行为发生。