在单页Shiny应用中,Autotrack.js插件的urlChangeTracker功能可能不起作用的原因是Shiny应用使用的是单页面应用的路由系统,而不是常规的URL路由。
为了解决这个问题,可以使用Shiny的JavaScript API来手动触发urlChangeTracker。下面是一个示例代码:
library(shiny)
ui <- fluidPage(
tags$script("
// 在Shiny应用加载后,手动调用urlChangeTracker
$(document).on('shiny:connected', function(event) {
// 获取urlChangeTracker插件的实例
var tracker = ga.getByName('trackerName').plugins_.filter(function(plugin) {
return plugin.get('name') === 'urlChangeTracker';
})[0];
// 手动触发urlChangeTracker
tracker.handleUrlChange();
});
"),
# ... 其他Shiny UI组件
)
server <- function(input, output) {
# ... Shiny 服务器逻辑
}
shinyApp(ui, server)
在上面的代码中,我们在Shiny应用加载后使用$(document).on('shiny:connected', function(event) { ... })
来监听Shiny应用的连接事件。然后,我们通过ga.getByName('trackerName').plugins_.filter(...)
来获取urlChangeTracker插件的实例,其中'trackerName'是你的Google Analytics追踪器的名称。最后,我们调用tracker.handleUrlChange()
来手动触发urlChangeTracker。
通过这种方式,我们可以在单页Shiny应用中使用Autotrack.js插件的urlChangeTracker功能。