我有一個包含Highcharter圖的Shiny應用程序。該圖是分散的,並且具有可拖動和可點擊的點。與拖動相關的操作在理論上應與與點擊相關的操作相互排斥。相互獨特的拖放圖事件
但是,在實踐中,點擊動作有時會在點拖動時觸發。單擊(沒有拖動)和拖動(這應該排除鼠標按鈕的釋放和拖動操作完成之前的點擊能力)需要在此應用程序中相互排斥。我的完整代碼根據事件的類型將不同的JavaScript操作傳遞迴Shiny服務器。兩起事件共同造成麻煩。
我懷疑該解決方案涉及到添加與每個事件相關的其他JavaScript操作。雖然我的JavaScript技術還不夠強大,無法知道這些調整可能會是什麼。谷歌搜索這個問題的幾個不同的變種沒有變成任何可能的解決方案。我發現最接近的討論是在Highcharts上下文中,here,但解決方案與主Highchart/draggable-events JS文件有關。
對此提出建議?
對於玩具的例子,你可以看到這種行爲在行動:
rm(list=ls())
library(highcharter)
library(shiny)
ui <- fluidPage(
highchartOutput("hcontainer")
)
# MUTUAL EXCLUSIVITY:
# if you drag in the plot, you should either drag (and get no alert) OR
# get an alert (and the point shouldn't/won't move), but never both.
server <- function(input, output, session) {
output$hcontainer <- renderHighchart({
hc <- highchart() %>%
hc_chart(animation = FALSE) %>%
hc_title(text = "draggable points demo") %>%
hc_plotOptions(
series = list(
point = list(
events = list(
drop = JS("function(){ /* # do nothing, for demo */
}"
),
click = JS("function(){
alert('You clicked') /* # give alert, for demo */
}"
)
)
),
stickyTracking = FALSE
),
column = list(
stacking = "normal"
),
line = list(
cursor = "ns-resize"
)
) %>%
hc_tooltip(yDecimals = 2) %>%
hc_add_series(
type = "scatter",
data = stars,
draggableY = TRUE,
draggableX = TRUE,
hcaes(x = absmag, y=radiussun)
)
hc
})
}
shinyApp(ui = ui, server = server)
我無法重現純JS這個問題:在拖動事件之後http://jsfiddle.net/kkulig/z5y4b67e/你能提供一些這方面的工作現場演示 問題? –
得到它複製:[http://jsfiddle.net/m5wnnnm5/1/](http://jsfiddle.net/m5wnnnm5/1/)。拖動該點時,請在釋放鼠標之前暫停一下。它似乎與散點有關,並且具有可拖動的點。 另外,在最初的文章中修復了R-Shiny代碼。它現在將運行,並且問題仍然存在。 – SMzgr356