#' Detect a user's browser information
#'
#' This function must be called somewhere in a Shiny app's UI in order to use any other
#' \{shinybrowser\} functions.
#' @section Accuracy:
#' It's important to understand there is no reliable way to detect the
#' information in \{shinybrowser\} with 100% accuracy.\cr\cr\{shinybrowser\} makes
#' a best effort at identifying the most accurate information, but some
#' browser/operating system combinations may be difficult to identify. Users
#' can also use a variety of tools to deliberately spoof this information.\cr\cr
#' With that in mind, \{shinybrowser\} should detect the correct information in
#' most cases.
#' @section Supported values:
#' Only major browsers and operating systems are supported, which means that the
#' RStudio Viewer may result in an "UNKNOWN" browser, and unpopular operating systems
#' may also result in "UNKNOWN".\cr\cr
#' For a list of values that can be detected, see [SUPPORTED_BROWSERS],
#' [SUPPORTED_DEVICES], and [SUPPORTED_OPERATING_SYSTEMS].
#' @section Mobile vs desktop vs tablet:
#' \{shinybrowser\} attempts to detect whether a device is "mobile" or "desktop".
#' The distinction between mobile and desktop is not always clear, so if what you
#' actually care about is the size of the device, it might be better to use
#' [get_width()].\cr\cr
#' Tablets return ambiguous results; some tablets self-report as mobile devices while
#' others as desktop.
#' @section Width and height:
#' The width and height of the browser window are only reported once, when the [detect()]
#' function is initially called.
#' If the user resizes the browser window, the new dimensions are not reported until
#' the page is refreshed.
#' @seealso [get_all_info()], [get_browser()], [get_os()], [get_device()], [get_width()]
#' @return HTML dependencies that are required to use {shinybrowser}.
#' @examples
#' if (interactive()) {
#' library(shiny)
#'
#' ui <- fluidPage(
#' shinybrowser::detect(),
#' "Your browser information:",
#' verbatimTextOutput("browser_info")
#' )
#' server <- function(input, output, session) {
#' output$browser_info <- renderPrint({
#' shinybrowser::get_all_info()
#' })
#' }
#' shinyApp(ui, server)
#' }
#' @export
detect <- function() {
shiny::tagList(
htmltools::htmlDependency(
name = "shinybrowser-binding",
version = as.character(utils::packageVersion("shinybrowser")),
package = "shinybrowser",
src = "assets/shinybrowser",
script = "shinybrowser.js"
)
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.