上下文:我正在使用shinyMobile软件包开发一个移动Shiny应用程序,该软件包是著名的framework7 HTML模板的包装器。
在我的应用中,用户必须使用多个下拉列表在第一个选项卡上选择属性,然后在其他选项卡上生成一些输出。每个选项卡都要求用户上下滚动以访问所有内容,在此过程中,通常会触发"拉动刷新"功能。
这真的很烦人,因为整个属性选择和输出都会丢失,用户必须从头开始。
我尝试了什么:基于这个将我指向这个 Google 开发人员页面的 SO 线程,我尝试将 CSS 翻滚动行为属性设置为contain
:body {overscroll-behavior-y: contain;}
。问题:它对我不起作用!(在Chrome Android上测试(
最小可重现示例:
默认应用,部署在此处
library(shiny);library(shinyMobile)
shiny::shinyApp(
ui = f7Page(
f7Card(
h5('try to pull to refresh. normally it should work.')
)
),
server = function(input, output) {}
)
据说是固定的应用程序,部署在这里
library(shiny);library(shinyMobile)
shiny::shinyApp(
ui = f7Page(
tags$style(type='text/css', '.body{overscroll-behavior-y: contain;}'),
f7Card(
h5('try to pull to refresh. Normally it should not work.')
)
),
server = function(input, output) {}
)
希望你们能重现我的问题并确定问题所在!!
您可能希望将 css 部分更改为:html,body{overscroll-behavior-y: contain;}
,请参阅 https://stackoverflow.com/a/42509310/3502164。
然后它在我的手机上对我有用(安卓浏览器(。
可重现的示例:
library(shiny)
library(shinyMobile)
app <- shiny::shinyApp(
ui = f7Page(
tags$style(type='text/css', 'html,body{overscroll-behavior-y: contain;}'),
f7Card(
h5('try to pull to refresh. Normally it should not work.')
)
),
server = function(input, output) {}
)
# use host config to access app from mobiles in the same network
shiny::runApp(appDir = app, host = '0.0.0.0')