Можно ли добавить "Вы уверены, что хотите покинуть эту страницу?" закрыть сообщение для Shiny App, когда браузер будет закрыт?
К сожалению, я не могу найти ответ в другом месте на StackExchange. Я думаю, что вы можете сделать это с помощью JavaScript, хотя я не очень знаком с этим. Большое спасибо заранее.
2 ответа
Самый простой способ добиться этого - использовать window.onbeforeunload
в JavaScript.
Код из принятого ответа в другом тема Stackoverflow:
window.onbeforeunload = function() {
return 'Your changes will be lost!';
};
Вы можете реализовать это (и любой код JavaScript), включив его в fluidPage
для приложений Shiny или dashboardBody
для страниц Shiny.
Код JavaScript должен быть заключен в теги head и script (как при включении файла JS в HTML)
Решение:
tags$head(tags$script(HTML("
// Enable navigation prompt
window.onbeforeunload = function() {
return 'Your changes will be lost!';
};
"))),
Воспроизводимый пример для приложения Geyser по умолчанию:
library(shiny)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Navigation prompt
tags$head(tags$script(HTML("
// Enable navigation prompt
window.onbeforeunload = function() {
return 'Your changes will be lost!';
};
"))),
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
output$distPlot <- renderPlot({
# generate bins based on input$bins from ui.R
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins + 1)
# draw the histogram with the specified number of bins
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
}
# Run the application
shinyApp(ui = ui, server = server)
С некоторыми Jquery / JS вы можете сделать это:
Я нашел следующее на:
https://www.oodlestechnologies.com/blogs/Capture-Browser-Or-Tab-Close-Event-Jquery-Javascript/
var validNavigation = false;
function wireUpWindowUnloadEvents() {
/*
* List of events which are triggered onbeforeunload on IE
* check http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx
*/
// Attach the event keypress to exclude the F5 refresh
$(document).on('keypress', function(e) {
if (e.keyCode == 116){
validNavigation = true;
}
});
// Attach the event click for all links in the page
$(document).on("click", "a" , function() {
validNavigation = true;
});
// Attach the event submit for all forms in the page
$(document).on("submit", "form" , function() {
validNavigation = true;
});
// Attach the event click for all inputs in the page
$(document).bind("click", "input[type=submit]" , function() {
validNavigation = true;
});
$(document).bind("click", "button[type=submit]" , function() {
validNavigation = true;
});
}
function windowCloseEvent()
{
window.onbeforeunload = function() {
if (!validNavigation){
callServerForBrowserCloseEvent();
}
}
}
function callServerForBrowserCloseEvent()
{
alert("Are you sure you want to close this window?");
// Or you could call a bootstrap modal here and give it yes/no buttons
}
Связанные вопросы
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.