是否可以设置“闪亮”选项以全视图模式(即最大化窗口)自动打开应用程序?
我的用户界面经过精心设计,只有在以全视图浏览时才具有漂亮的外观。
我的源代码写在两个标准文件中:server.R和ui.R。
我对这两个选项都感兴趣:在(1)RStudio窗口和(2)外部浏览器中运行应用程序。
尽管在我看来这是一个自然而简单的问题,但是在搜索网络时我找不到任何建议。有人知道解决方案吗?
您要求的是与浏览器相关的,不能从R或Shiny 强制执行。对于会议,我有相同的要求,在该会议中,我将应用程序部署为团队活动,所有会议桌都配有连接的平板电脑。请注意,很难做到这一点的原因在于安全性以及网络钓鱼 / 社会工程学的风险。有关此的一些其他信息:
根据您的情况的限制,您可以选择几种方式,而没有特定的顺序:
请求浏览器通过javascript切换到全屏模式
有一个全屏API,你可以用它来请求浏览器切换到全屏模式。这样做的好处是,只要浏览器支持API,它就与浏览器和平台无关。但是,这只是一个请求,不能保证能够按预期工作。这个问题(和这个问题)演示了一个实现,shinyjs如果您选择沿着这一道路前进,则可以使用出色的软件包。
这是一个演示使用全屏API的最小示例。使用旧忠实间歇泉数据演示应用程序的改编版。
应用程序
library(shiny)
library(shinyjs)
jsToggleFS <- 'shinyjs.toggleFullScreen = function() {
var element = document.documentElement,
enterFS = element.requestFullscreen || element.msRequestFullscreen || element.mozRequestFullScreen || element.webkitRequestFullscreen,
exitFS = document.exitFullscreen || document.msExitFullscreen || document.mozCancelFullScreen || document.webkitExitFullscreen;
if (!document.fullscreenElement && !document.msFullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) {
enterFS.call(element);
} else {
exitFS.call(document);
}
}'
ui <- fluidPage(
useShinyjs(),
extendShinyjs(text = jsToggleFS),
titlePanel("Old Faithful Geyser Data"),
sidebarLayout(sidebarPanel(
sliderInput("bins", "Number of bins:", min = 1, max = 50, value = 30),
div(
HTML("<button type='button'>Toggle Fullscreen</button>"),
onclick = "shinyjs.toggleFullScreen();"
)
),
mainPanel(plotOutput("distPlot")
))
)
server <- function(input, output) {
output$distPlot <- renderPlot({
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins + 1)
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
注意:如果要实现此功能,则可以选择比我非常简单的HTML按钮更高级的功能。重要的是要注意,浏览器仅在用户启动时才允许使用API。如果未将其检测为用户事件,则可以
Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture.在JavaScript控制台中找到该消息。
还有一个screenfull.js库,它试图以更友好的方式打包API。
使用某种形式的信息亭模式部署您的应用
可以指示浏览器以信息亭模式(即全屏)启动,请参见此处以在Windows上使用Chrome的示例。当然,这里的问题是,除非您在标准环境(例如企业)中工作,否则执行起来可能会非常沮丧。
使用专门设计为始终使用全屏模式的浏览器
因为我的平台是会议的android系统,所以我使用了一个应用程序(不是这个,而是类似的),并且在将该浏览器设置为默认打开页面后,在主页上放置了一个快捷链接。不理想,但是满足了我的迫切要求。
接受当前状态/通知用户
鉴于可用的解决方案和安全性问题存在一定程度的脆弱性,无论您选择如何解决此问题,您都可以选择接受当前状态并利用此知识尽可能地布局应用。或者可能只是通知您的用户,该应用程序已针对全屏使用进行了优化,他们可以F11在浏览器中按(或等效按钮)启用该功能。
| 归档时间: |
|
| 查看次数: |
2936 次 |
| 最近记录: |