如何在Shining中使用Javascript更改卷?
我正在尝试更改我闪亮应用程序中音频标签上的音量。我调查过的一些网站显示,您可以直接使用audio标记中的“volume”参数来设置它,但我无法复制它 我发现的这个站点使用Javascript来更新卷,但我不知道如何调用用Javascript创建的函数。非常感谢您的帮助如何在Shining中使用Javascript更改卷?,javascript,r,shiny,Javascript,R,Shiny,我正在尝试更改我闪亮应用程序中音频标签上的音量。我调查过的一些网站显示,您可以直接使用audio标记中的“volume”参数来设置它,但我无法复制它 我发现的这个站点使用Javascript来更新卷,但我不知道如何调用用Javascript创建的函数。非常感谢您的帮助 library(shiny) library(shinyjs) ui <- fluidPage( useShinyjs(), tags$audio(id = "myAudio", controls = NA, au
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
tags$audio(id = "myAudio", controls = NA, autoplay = NA, tags$source(src="aud.mpeg")),
br(),
actionButton("mybutton", "Submit"),
tags$script('
var x = document.getElementById("myAudio").onclick
function setHalfVolume() {
x.volume = 0.2;
};
')
)
server <- function(input, output) {
observeEvent(input$mybutton, {
setHalfVolume()
})
}
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(shinyjs)
ui您离目标非常接近,但在获取正确的ID方面存在一些问题
要遵循您的路径,请将脚本替换为:
document.getElementById("mybutton").onclick =
function setHalfVolume() {
document.getElementById("myAudio").volume = 0.2;
};
按钮的onclick属性必须是更改,而不是音频的属性。并且音频DOM具有要更改的音量属性
另一种方法是直接使用actionButton的onclick属性
tags$script('
decrease = function(){ document.getElementById("myAudio").volume = 0.2;}
')
tags$audio(id = "myAudio", controls = NA, autoplay = NA, tags$source(src="sound.mp3")),
actionButton("lowerButton", "lower", onclick="decrease()")
谢谢你的提问和回答。这帮了大忙。我有一个后续问题:是否可以使用滑块更改音量?因此,有必要为脚本设置一个输入变量。类似这样的东西(但似乎不起作用):
对于未来的读者:这里有一个例子,我不确定如何实现你的代码,但当我在chrome这样的网络浏览器中打开我的应用程序时,我的音频元素已经有了一个内置的音频滑块。但是,如果我只是在RStudio中运行应用程序,则不会出现这种情况。
tags$script('volumeChange = function(in){ document.getElementById("myAudio").volume = in;}'),
#calibration slider
sliderInput("levelSlider", "Level:",min = 0, max = 1, value = 0.3),
# calibrate level button
actionButton("playButton", "Play sound", onclick=paste0("volumeChange(","levelSlider$value",")")),