从我的 iphone(从触摸屏)访问时,无法在 jQuery 模态弹出窗口内向下滚动

Posted

技术标签:

【中文标题】从我的 iphone(从触摸屏)访问时,无法在 jQuery 模态弹出窗口内向下滚动【英文标题】:unable to scroll down inside jQuery modal popup when access from my iphone (from a touch screen) 【发布时间】:2020-07-30 11:57:27 【问题描述】:

我有以下 jQuery 代码在我的 asp.net MVC 核心 Web 应用程序中显示模式弹出窗口:

$(document).ready(function () 
    $(function () 
        $.ajaxSetup( cache: false );
        $(document).on('click', 'button[data-modal]', function (e) 
            $('#myModalContent').css( "margin": "5px", "max-height": screen.height * .82, "max-width": screen.height * .82, "overflow-y": "auto" ).load($(this).attr("data-url"), function () 
                $('#myModal').modal(
                    height: 1000,
                    width: 2200,
                    resizable: true,
                    keyboard: true,
                    backdrop: 'static',
                    draggable: true
                , 'show');
            );
            return false;
        );
    );
);

以及以下 html

 <div id='myModal' class='modal fade in'>
     <div class="modal-dialog">
           <div class="modal-content">
               <div id='myModalContent'></div>
           </div>
     </div>
 </div>

现在模态弹出窗口将呈现一个局部视图,当从普通 Windows 机器访问时将显示一个水平工具栏(因为局部视图有很多水平内容),但是如果我访问 iPhone 内的模态弹出窗口,那么我无法在模式弹出窗口内向下滚动。如果我尝试向下滚动,我实际上将滚动主页而不是模式弹出窗口。关于如何解决此问题的任何建议?

【问题讨论】:

你在使用引导程序吗? @MosiaThabo 是的,我正在使用引导程序 好的酷,你能试试我提供的答案吗。 你使用的是什么版本的 Bootstrap? @PedroLudovicoBozzini 引导程序版本 4 【参考方案1】:

您可以这样配置,当您的模式打开时,将一个类添加到您的 &lt;body&gt; 元素以防止它滚动。

在你的 js 中,在你切换模式的地方加入这个:

$(document.body).addClass('modal-open'); 当您的模态打开时执行此操作 $(document.body).removeClass('modal-open'); 模态关闭时执行此操作

然后在您的 css 中,您可以将一些样式应用于该特定类:

body.modal-open 
  overflow: hidden !important;
  position: fixed !important;

如果您使用引导程序,您可以考虑使用checking this out。我不确定是否仍然如此,我对引导程序不熟悉。

【讨论】:

我试过你的 CSS ,这完全阻止了在移动设备上滚动,所以如果用户在移动浏览器上打开它,他们看不到整个模式弹出窗口......之前在添加你的代码之前,用户可以滚动,但将滚动主页而不是弹出窗口..对此有何建议? 您必须在模态样式中添加overflow: auto。因为上面的代码所做的是防止在主页上滚动......你还必须在你的实际模态容器上进一步激活滚动事件。 我添加了这个 css body.modal-open position: fixed; overflow: hidden; left:0; right:0; .modal -webkit-overflow-scrolling: auto; .. 所以我已经添加了 overflow: auto.. 这是正确的吗? 是的,这样当里面的内容比显示长时,你的模态框会添加滚动效果。尝试并提供反馈,以便我提出其他方法。 正如我提到的,我已经添加了这个 css body.modal-open position: fixed; overflow: hidden; left:0; right:0; .modal -webkit-overflow-scrolling: auto; .. so i am already adding overflow: auto ,这将阻止滚动手机内的模式弹出窗口,所以目前用户无法在 iphone 浏览器上查看整个弹出窗口,因为模态弹出窗口是 UN-scrollable ..【参考方案2】:

也许this answer 可以帮助你。对于类似的问题,它建议使用以下 CSS:

body.modal-open 
    position: fixed;
    overflow: hidden;
    left:0;
    right:0;

.modal
    -webkit-overflow-scrolling: auto;

【讨论】:

我试过你的 CSS ,这完全阻止了在移动设备上滚动,所以如果用户在移动浏览器上打开它,他们看不到整个模式弹出窗口......之前在添加你的代码之前,用户可以滚动,但将滚动主页而不是弹出窗口..对此有何建议?

以上是关于从我的 iphone(从触摸屏)访问时,无法在 jQuery 模态弹出窗口内向下滚动的主要内容,如果未能解决你的问题,请参考以下文章

Iphone:无法从我的横向视图切换回纵向视图

无法从我网络上的其他设备访问 localhost

无法从iPhone Safari访问MacBook上的localhost,显示加载栏然后失败?

无法从我的项目根目录访问静态 build.html

无法从我的 Android 模拟器访问 HTTPS

无法从我的本地主机访问 docker 上的 apache