Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R闪亮应用程序检测手机_R_Mobile_Shiny - Fatal编程技术网

R闪亮应用程序检测手机

R闪亮应用程序检测手机,r,mobile,shiny,R,Mobile,Shiny,我有一个闪亮的应用程序(实际上是一个交互式R降价报告),我想根据用户是否在移动设备上对其进行格式化。我在g3rv4上找到了这篇博客文章,它描述了如何测试这一点,但我还没能在下面的示例应用程序中使用它 我是一个建模者,而不是程序员,所以Javascript可能有一些地方我做错了。我没有收到错误,但是我没有从textOutput('isItMobile')获得任何输出 这里有一种根据屏幕大小检测(小型)移动设备的方法。注意,这故意排除了屏幕更大的平板电脑 下面的代码片段检查屏幕大小是否低于768p

我有一个闪亮的应用程序(实际上是一个交互式R降价报告),我想根据用户是否在移动设备上对其进行格式化。我在g3rv4上找到了这篇博客文章,它描述了如何测试这一点,但我还没能在下面的示例应用程序中使用它

我是一个建模者,而不是程序员,所以Javascript可能有一些地方我做错了。我没有收到错误,但是我没有从
textOutput('isItMobile')
获得任何输出

这里有一种根据屏幕大小检测(小型)移动设备的方法。注意,这故意排除了屏幕更大的平板电脑

下面的代码片段检查屏幕大小是否低于768px,并使用
onInputChange
作为名为
is\u mobile\u device
的输入将结果发送到闪亮的服务器。该检查仅在页面加载且闪亮的UI完成加载时执行一次

将其放在JS文件中,并将其包含在您的UI中(例如,就像在问题中使用
标记$script
):

浏览器支持:

在您的
服务器
函数中,您可以定义一个
反应式
来检索值:

server <- function(input, output, session) {
    is_mobile_device <- reactive(isTRUE(input$is_mobile_device))
    # ...
}

server您是否考虑过使用一个提供框架的包来实现这一内置功能?对于简单的需求,我建议使用
flexdashboard
,尤其是考虑到您所说的交互式
rmarkdown
报告。如果您需要更多的功能,请查看
shinydashboard
,尽管它的学习曲线要陡峭得多。谢谢!我会调查的。嗨,西蒙伍德沃德,你有没有解决过这个问题?我也有同样的问题hi@Sharma不,我没有让它工作。
var isMobileBinding = new Shiny.InputBinding();
$.extend(isMobileBinding, {
  find: function(scope) {
    return $(scope).find(".mobile-element");
    callback();
  },
  getValue: function(el) {
    return /((iPhone)|(iPod)|(iPad)|(Android)|(BlackBerry))/.test(navigator.userAgent)
  },
  setValue: function(el, value) {
  },
  subscribe: function(el, callback) {
  },
  unsubscribe: function(el) {
  }
});

Shiny.inputBindings.register(isMobileBinding);
$(document).on('shiny:sessioninitialized', function (e) {
  var mobile = window.matchMedia("only screen and (max-width: 768px)").matches;
  Shiny.onInputChange('is_mobile_device', mobile);
});
server <- function(input, output, session) {
    is_mobile_device <- reactive(isTRUE(input$is_mobile_device))
    # ...
}