#javascript #html #css #d3.js #pointer-events
Вопрос:
У меня есть всплывающее окно, которое я создал в d3.js, где это в основном Div, который я масштабирую до 1 при событии щелчка и масштабирую до 0 при втором событии щелчка в любом другом месте (т. Е. Событие отключения щелчка).
Не имея возможности опубликовать весь код в воспроизводимом примере, вот соответствующий код.
Проблема:
Всплывающее окно работает нормально, пока ссылка не будет добавлена в html всплывающего окна (эта строка: "hello".link("https://www.google.com")
). Когда добавляется ссылка, по которой можно щелкнуть, вы не можете прокручивать всплывающее окно, и кажется, что все события указателя отключены. Я не уверен, что добавление ссылки приведет к этому.
Я пытался использовать href
вместо .link
этого, и это все еще не работает.
язык JavaScript:
var LeafletDiv = d3.select("#content").append("div")
.attr("class", "county2014Tooltip")
.style("opacity", 1)
.style("scrollTop", 0)
var events = mapG.selectAll("circle")
.data(eventArray)
.enter().append("circle")
.attr("class", 'events')
.style("display", dateMatch)
.style("pointer-events", "auto")
.attr("classed", "visible")
.on("click", function(d) {
console.log('first click!')
$('body').css({
overflow: 'hidden'
});
LeafletDiv.transition()
.duration(200)
.style("opacity", .9)
.style("transform","scale(1)")
var popInfo = '<br/>' d.EventDate
'<br/>' "hello".link("https://www.google.com") //this causes it to break
'<br/>'
appendText.push(popInfo '<br/>' '<br/>')
})
LeafletDiv
.html( appendText.join(""))
.style("pointer-events", 'all')
CSS:
div.county2014Tooltip {
word-wrap: normal;
position: absolute;
pointer-events:none;
overflow-y:scroll;
overflow-wrap: break-word;
word-wrap: break-word;
display:inline-block ;
}
Спасибо.
Комментарии:
1. какую версию d3 вы используете? v6 ?
2. я использую: d3js.org/d3.v4.min.js
3. @Diamondjoe 12 вы пробовали после изменения стиля родительского элемента
body
? напримерoverflow: 'auto'; height:100vh
, и т. д
Ответ №1:
Попробуйте обновить свою проблемную строку до этого:
var popInfo = '<br/>' d.EventDate
'<br/><a href="https://google.com">hello</a>' //changed to a html link tag
'<br/>'
Ответ №2:
Обычно я не использую метод ссылки, поскольку он устарел, и предпочитаю свойство href. Не уверен, что это решит вашу проблему, но в любом случае это лучшая практика. удачи!
Комментарии:
1. Спасибо! буду ли я просто использовать тег href при создании всплывающего окна в var popInfo?
2. Это не тег href, это тег привязки с определенным свойством href. Например: <a href=» This/» rel=»nofollow noreferrer»> google.com»>Это> ссылка на Google</a>
3. стреляй, все равно не повезло. Я отредактирую ответ, чтобы люди знали, что я пробовал это .
Ответ №3:
Я нашел ответ на этот вопрос или, по крайней мере, что-то, что заставило его работать. Я только поместил ссылку во всплывающее окно, инициированное щелчком, и это сработало. Когда я поместил ссылку в оба всплывающих окна (то, которое было инициировано наведением и щелчком мыши), она сломалась.