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