У меня довольно сложный и особый вопрос. У меня есть контейнер div
, который изначально скрыт (display: none
) и который отображается, когда пользователь нажимает кнопку (используя функцию jQuery show()
). В этом div
есть визуализация SVG.
HTML
<div id="parent">
<object id='myObject' type="image/svg+xml"></object>
</div>
Javascript
В SVG загружается следующий код:
fetch('LINK TO THE SVG FILE')
.then(function(r) {return r.blob()})
.then(function(b) { return myObject.data = URL.createObjectURL(b)})
myObject.onload = function() { // wait for the svg has loaded
var myObject = this; // we're in the object's load event handler.
var svg = d3.select(myObject.contentDocument) // get the contentDocument
.select("svg"); // then get the svg inside
//...some more styling things happen here
}
Моя проблема в том, что я не знаю, как (иначе , где ) мне следует отменить привязку к событию onload, потому что оно срабатывает каждый раз, когда пользователь нажимает кнопку, чтобы изменить режим display
родитель div
. Когда я использую следующий код ...
fetch('LINK TO THE SVG FILE')
.then(function(r) {return r.blob()})
.then(function(b) { return myObject.data = URL.createObjectURL(b)})
.then(function() {return myObject.onload = null})
... он никогда не применяет настройки стиля, которые я выполняю в функции onload
. Также, когда я добавляю настройку myObject.onload = null
в конец события нажатия моей кнопки, она не запускает функцию onload
.
Что мне здесь не хватает?