Apa arti dari kesalahan ini? dan cara memperbaikinya
Elemen yang Anda coba render tidak ada di dalam Document DOM
Jadi bagaimana cara memperbaiki masalah ini?
0,5 baik-baik saja tetapi ketika saya meningkatkan ke 1 saya mendapatkan kesalahan ini
Silakan bagikan contoh di jsfiddle
Saya telah mencoba memuat html2canvas js (versi 1) dan js aplikasi saya setelah badan HTML dan masalah ini diperbaiki untuk saya.
Adakah yang bisa memperbaiki masalah ini, saya memiliki masalah yang sama saat menggunakan di halaman cshtml ASP.Net MVC.
Jika Anda menggunakan jQuery untuk menemukan DIV gunakan
html2canvas($("#element")[0]).then(function(kanvas) {
$("#elemen-keluar").append(kanvas);
});
Tetapi saya tidak dapat mengambil gambar peta google menggunakan html2canvas (semua gambar peta tidak datang), Adakah yang bisa membantu saya bagaimana melakukan hal yang sama di cshtml ???
@cjcortez @RaghavPrabhu apakah solusi smartbepl di atas memperbaikinya untuk Anda dengan anggapan Anda menggunakan jQuery atau perpustakaan lain yang menyediakan daftar elemen alih-alih satu Element
?
Ini bekerja untuk saya!
html2canvas($('#div').get(0)).then( function (kanvas) {
console.log(kanvas);
});
terima kasih berhasil
@jeremielodi Terima kasih, ini membuatku gila!
Saya mencoba kode yang mirip dengan di atas, tetapi mungkin kesalahan yang saya dapatkan tidak terlalu terkait: Tidak tertangkap (dalam janji) tidak terdefinisi... Janji ditolak (async)
Saya mengalami masalah yang sama persis - saya ingin memanggil HTML2Canvas pada klik tombol. Tidak peduli bagaimana saya menulis panggilan HTML2Canvas, saya akan mendapatkan kesalahan "Tidak tertangkap (dalam janji) tidak terdefinisi... Janji ditolak (async)". Akhirnya, saya belajar sedikit tentang cara kerja janji dan menemukan solusinya adalah menambahkan tangkapan:
function myFunction() {
html2canvas(document.querySelector("#capture")).then(canvas => {
var base64encodedstring = canvas.toDataURL("image/jpeg", 1).replace("data:image/jpeg;base64,", "");
j$("[id$='inputHidden']").val(base64encodedstring);
console.log('Saving...');
mySaveFunction();
})
.catch(function (error) {
/* This is fired when the promise executes without the DOM */
});
}
Peringatan, saya benar-benar pemula javascript dan hanya mengerti sedikit tentang cara kerja janji. Kode saya berfungsi dengan baik tanpa .catch() jika saya menggunakannya di luar suatu fungsi. Saya berasumsi bahwa entah bagaimana, ketika Anda merangkumnya, ia tidak lagi memiliki akses DOM yang benar dan janjinya gagal.
@ikemike ini dapat membantu Anda
```html
@niklasvh dengan versi terbaru html2canvas saya mendapatkan Uncaught (dalam janji): kesalahan tidak terdefinisi. Bisakah kamu menolongku.
ini bekerja
Ini berfungsi dengan baik untuk saya:
function downloadURI(uri, name) {
var link = document.createElement("a");
link.download = name;
link.href = uri;
document.body.appendChild(link);
link.click();
clearDynamicLink(link);
}
function DownloadAsImage() {
var element = $("#table-card")[0];
html2canvas(element).then(function (canvas) {
var myImage = canvas.toDataURL();
downloadURI(myImage, "cartao-virtual.png");
});
}
di chrome, berfungsi dengan baik, tetapi di IE11, tidak berfungsi ... T_T;
Tidak tertangkap (berjanji): kesalahan tidak terdefinisi
@bandacs apakah Anda menemukan solusi untuk ini? Saya mendapatkan kesalahan persis seperti tangkapan layar Anda.
Saya menggunakan rilis 1.0 alpha 12 dan saya mengalami masalah yang sama. Saya sudah mencoba semua solusi ini.
Saya sudah mencoba solusi ini oleh @smartbepl
html2canvas($("#element")[0]).then(function(kanvas) {
$("#elemen-keluar").append(kanvas);
});
Saya mencoba ini oleh @jeremielodi
html2canvas($('#div').get(0)).then( function (kanvas) {
console.log(kanvas);
});
Saya juga mencoba solusi leandrocgsi dan mencoba menambahkan tangkapan seperti yang disarankan @ikemike .
Untuk menyederhanakannya dan memastikan semua elemen dimuat di DOM, saya menempatkan fungsi yang disebut take_screenshot().
fungsi take_screenshot()
{
html2canvas($(".image__container")[0]).then(canvas => {
console.log('tolong bekerja saya kehilangan pikiran saya');
});
}
Saya kemudian memanggil take_screenshot() langsung dari konsol javascript untuk memastikan semuanya dimuat.
Saya mendapatkan kesalahan yang sama Tidak tertangkap (berjanji) tidak terdefinisi.
Saya memiliki masalah yang persis sama dengan yang dihadapi oleh https://github.com/niklasvh/html2canvas/issues/1313#issuecomment -377132089
Adakah yang bisa menemukan solusi untuk masalah ini?
kenapa saya gagal di cheerio?
.get(url)
.end((err, res) => {
cheerio.load(res.text)
html2Canvas($('#statuses').get(0), {
allowTaint: true
}).then(function(canvas) {})
})
Uncaught (in promise) Error: Element is not attached to a Document
Ada konvensi pemanggilan lain sekarang.
Versi 0.5 mengharapkan node dalam array, sementara Anda sekarang memberikannya secara langsung.
Versi 0.5 memiliki opsi "onrendered", sementara Anda sekarang menggunakan konstruksi "then".
Komentar yang paling membantu
Jika Anda menggunakan jQuery untuk menemukan DIV gunakan
html2canvas($("#element")[0]).then(function(kanvas) {
$("#elemen-keluar").append(kanvas);
});