我正在开发一个 Shiny 项目,其中 Shiny 应用程序包含大量代码。我想使用以下方式交互式调试应用程序的代码:
runApp("ShinyApp.R", launch.browser = TRUE, display.mode = "showcase")
Run Code Online (Sandbox Code Playgroud)
该display.mode = "showcase"参数在我的浏览器中显示应用程序旁边的活动代码,并突出显示用户与应用程序交互的区域。这是一个很好的例子,说明了它是如何工作的:https ://shiny.rstudio.com/articles/action-buttons.html
这个答案中提到了如何使用它的另一个例子:How do Ihighlight active code in a sunny app?
我发现具有挑战性的是,因为我的应用程序的脚本包含超过 800 行代码,所以我无法在突出显示发生时看到它(它消失得太快)。正如这里提到的: https: //shiny.rstudio.com/articles/display-modes.html,突出显示几分钟后就会消失。
我的问题是:
是否可以增加突出显示区域消失的时间?
有没有办法强制侧边栏滚动到突出显示的区域?
感谢您的任何建议或答案!
是的,是的,但是你必须编辑源代码,而且它是 Javascript。需要修改的代码位于inst/www/shared/shiny-showcase.js. 如果你想从那里开始,我已经在我的 Shiny 分支上进行了代码更改。
对于关于突出显示持续时间的第一个问题,这是由第 112 行的JQuery 突出显示效果处理的:
// End any previous highlight before starting this one
jQuery(el)
.stop(true, true)
.effect("highlight", null, 5000);
Run Code Online (Sandbox Code Playgroud)
原来是 1600,即 1.6 秒,所以我在这里将其提高到 5 秒。您可以将其更改为您认为最好的任何内容。
关于滚动到活动/突出显示的代码的第二个问题未包含在原始脚本中,但该功能已烘焙到 Web 元素中并称为element.scrollIntoView(). 我刚刚在突出显示块之后立即插入了这段代码:
// Scroll to highlighted element
el.scrollIntoView({behavior: 'smooth'});
Run Code Online (Sandbox Code Playgroud)
el是当前指向要突出显示的活动代码区域的变量名称。
这里是正在运行的调整的托管工作演示。