我想在Shiny應用程序上實現into.js多頁功能。多頁intro.js閃亮
代碼波紋管是一種不起作用的嘗試。第一個選項卡很好地工作,顯示第二個頁面的彈出窗口,但不切換選項卡。
ui.R
library(shiny)
shinyUI(tagList(
tags$head(
HTML("<link rel='stylesheet' type='text/css' href='css/introjs.min.css'>")
),
navbarPage("Old Faithful Geyser Data",
tabPanel(id = "fTab", "First tab",
HTML("<h1 data-step='1' data-intro='This is a tooltip!'>Basic Usage</h1>"),
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30),
plotOutput("distPlot"),
HTML("<a id='startButton' class='btn btn-large btn-success' href='javascript:void(0);'>Help</a>")
),
tabPanel(tabName = "sTab", "Second tab", id = "tt",
HTML("<h1 data-step='2' data-intro='This is a second tooltip!'>Basic Usage</h1>"),
sliderInput("bins2",
"Number of bins:",
min = 1,
max = 50,
value = 30),
plotOutput("distPlot2")
)
),
HTML("<script type='text/javascript' src='js/intro.min.js'></script>"),
HTML("<script type='text/javascript'>document.getElementById('startButton').onclick = function() {
introJs().setOption('doneLabel', 'Next page').start().oncomplete(function() {
window.location.hash = '#!tt?multipage=true';
});
};</script>")
))
server.R
library(shiny)
shinyServer(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')
})
output$distPlot2 <- renderPlot({
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins2 + 1)
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
})
的JS和CSS文件從intro.js是在WWW文件夾內的JS和CSS文件夾。可能會發現intro.js文件here
我的猜測是我在ui.R底部的javascript代碼中的函數中做了錯誤的操作。我試圖通過將window.location.href替換爲window.location.hash並引用「tt」的選項卡id來修改here中的示例。
我想你也許需要模擬使用JavaScript的選項卡中單擊事件。 –
無恥的插件:考慮嘗試'rintrojs'軟件包。 https://github.com/carlganz/rintrojs – Carl