Html2canvas: Tidak tertangkap (dalam janji) Elemen yang disediakan tidak ada dalam Dokumen

Dibuat pada 14 Des 2017  ·  23Komentar  ·  Sumber: niklasvh/html2canvas

Apa arti dari kesalahan ini? dan cara memperbaikinya

Needs More Information

Komentar yang paling membantu

Jika Anda menggunakan jQuery untuk menemukan DIV gunakan
html2canvas($("#element")[0]).then(function(kanvas) {
$("#elemen-keluar").append(kanvas);
});

Semua 23 komentar

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


html2kanvas


@niklasvh dengan versi terbaru html2canvas saya mendapatkan Uncaught (dalam janji): kesalahan tidak terdefinisi. Bisakah kamu menolongku.

image

image

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".

Apakah halaman ini membantu?
0 / 5 - 0 peringkat