То, что вы пытаетесь сделать, мне нравится. Я бы сделал следующее:
Непосредственно перед вашим вызовом html2canvas
попробуйте записать то, что обнаруживает ваш селектор.
const dpoBaseImageEl = querySelector('#dpo_base_image');
console.log(dpoBaseImageEl);
html2canvas(dpoBaseImageEl, ....
поставьте точку останова на console.log
и убедитесь, что вы возвращая селектор, который вы ожидаете.
затем удалите все дополнительные реквизиты, которые вы передаете (только для целей тестирования), и посмотрите, поможет ли это вообще.
Я бы также попробовал просто сделав это предельно простым и сделав что-то вроде этого:
document.body.innerHTML += '<div id="dpo_base_image">THIS IS A TEST HERE</div>';
html2canvas(document.querySelector('#dpo_base_image')).then(canvas => {
alert("canvas built!");
});
ПРИМЕЧАНИЕ. Мы удалили ВСЕ другие if
условия, представления и журналы консоли. Цель состоит в том, чтобы сделать его простым ...
как уже упоминалось, promises
являются асинхронными, поэтому вы должны ожидать, что ваше оповещение "Canvas built" будет
Я предполагаю, что либо
- Ваш селектор не работает
- Реквизиты, которые вы пытаетесь передать, либо неверны, находятся за пределами границ, либо мешают
- Изображение, которое вы надеетесь захватить, не разрешено
- Захвачена пустая страница, поэтому заполнить его нечем. (таким образом добавляя контент к
div
, который вы пытаетесь захватить)
Если вышеперечисленное работает, попробуйте постепенно добавлять некоторые из ваших свойств конфигурации обратно, пока они не сломаются. Я бы сказал, тогда вы сразу узнаете, что вызывает у вас проблемы.