Мое обоснованное предположение состоит в том, что браузер еще не знает размер изображения, так как вы не ждете полной загрузки изображения.Я хотел бы сделать что-то вроде этого:
const load = (obj) =>
new Promise(resolve => obj.onload = resolve);
async function addSVG() {
let bulletSVG = document.createElement("object");
bulletSVG.setAttribute("class", "bullet");
bulletSVG.setAttribute("type", "image/svg+xml");
bulletSVG.setAttribute("data", "imgs/bullet.svg");
document.body.appendChild(bulletSVG);
await load(bulletSVG);
console.log(bulletSVG.getBoundingClientRect());
}
addSVG();
ОБНОВЛЕНИЕ Если ваш браузер не поддерживает обещания, и вы не можете / не хотите использовать транспортер (такой как Babel 7);Вы заставляете его работать, используя непосредственно обработчик событий, хотя это не будет так элегантно:
function addSVG() {
let bulletSVG = document.createElement("object");
bulletSVG.setAttribute("class", "bullet");
bulletSVG.setAttribute("type", "image/svg+xml");
bulletSVG.setAttribute("data", "imgs/bullet.svg");
document.body.appendChild(bulletSVG);
bulletSVG.onload = function() {
console.log(bulletSVG.getBoundingClientRect());
}
}