当Chrome浏览器已在我的桌面(linux)中打开时,我能够启动闪亮的应用程序。但是,当我的浏览器关闭,并且我启动闪亮的应用程序时,它只显示一个空白页面并在较低状态栏中“等待127.0.0.1 ...”。换句话说,它启动了chrome,但没有显示闪亮的应用内容。这是我的代码:
library(shiny)
library(shinyBS)
launch.browser = function(appUrl, browser.path='/usr/bin/chromium-browser') {
system(sprintf('"%s" --disable-gpu --app="data:text/html,<html>
<head>
<title>Configuration</title>
</head>
<body>
<script>window.resizeTo(800,500);window.location=\'%s\';</script>
</body></html>"', browser.path, appUrl))
}
shinyApp(
ui = fluidPage(
fluidRow(
br(),
wellPanel(
fluidRow(
h4('User Information')
),
fluidRow(
column(4,
textInput('Name', 'Full Name', value = "")
),
column(4,
numericInput('accNum', 'Account Number', value = "")
),
column(4,
textInput('token', 'Account Token', value = "")
)
)
)
),
fluidRow(
column(12,
actionButton('save', 'Save')
)
),
bsTooltip(id = "accNum", title = "Enter Lending Club account number",
placement = "bottom", trigger = "hover")
# tags$head(tags$style(type="text/css", "#accNum {width: 100px}"))
),
server = function(input, output, session) {
session$onSessionEnded(function() {
stopApp()
})
observe({
if (input$save == 0)
return()
isolate({
j<<-input$accNum
})
})
},
options = list(launch.browser=launch.browser)
)
感谢您的帮助
*编辑1 *
我已经验证浏览器启动正常并转到闪亮的指定网址之外:
system('/usr/bin/chromium-browser --disable-gpu --app="data:text/html,<html>
<head>
<title>Configuration</title>
</head>
<body>
<script>window.resizeTo(800,500);window.location=\'http://www.facebook.com\';</script>
</body></html>"')
上面的内容也适用于使用位置facebook.com闪亮。但是,当我将其更改为appUrl参数时,它永远不会连接。我还验证了页面的来源是指向正确的127.0.0.1:3189,然而,由于某种原因看起来闪亮没有响应......
答案 0 :(得分:2)
由闪亮的github人员回答:
“这是由于您的shell脚本出现问题。
您需要添加&amp;在后台运行浏览器。否则,在R启动浏览器之后,浏览器将不会将控制权返回给R,直到浏览器进程结束。
当铬已经打开时,它不是问题的原因是因为如果浏览器已经打开,铬对命令的响应不同 - 它总是立即返回,即使命令没有&amp ;.“
这是我使用的确切脚本:
launch.browser = function(appUrl, browser.path=path) {
system(sprintf('"%s" --disable-gpu --app="data:text/html,<html>
<head>
<title>System Configuration</title>
</head>
<body>
<script>window.resizeTo(830,675);window.location=\'%s\';</script>
</body></html>" &', browser.path, appUrl))
}
答案 1 :(得分:1)
对我来说,约翰建议的答案没有用。不确定原因......自2014年12月以来,某些Chrome设置可能已更改。
在我的案例中,有效的方法是使用shell(..., wait=FLASE)
代替system(...)
。
launch.browser = function(appUrl, browser.path=path) {
system(sprintf('"%s" --disable-gpu --app="data:text/html,<html>
<head>
<title>System Configuration</title>
</head>
<body>
<script>window.resizeTo(830,675);window.location=\'%s\';</script>
</body></html>" &', browser.path, appUrl), wait=FALSE)
}