<p>html2canvas: خطأ في العثور على DIV في المستند المنسوخ</p>

تم إنشاؤها على ٢٤ يناير ٢٠١٨  ·  12تعليقات  ·  مصدر: niklasvh/html2canvas

تقارير الأخطاء:

يؤدي استخدام element.cloneNode (صواب) أو angular.copy (عنصر) في HTMLElement قبل تمريره إلى html2canvas إلى إرجاع هذا الخطأ.

html2canvas: خطأ في العثور على DIV في المستند المنسوخ
غير معلوم (في الوعد) خطأ في العثور على DIV في المستند المنسوخ

تحديد:

  • تم اختبار إصدار html2canvas باستخدام: 1.0.0-alpha.9 "
  • المتصفح والإصدار: Chrome 63.0.3239.132
  • نظام التشغيل: ماك

التعليق الأكثر فائدة

تم إصلاح هذا الآن.
يبدو أننا لا نستطيع العمل مع dom ككائن في الذاكرة ، فهو يتطلب تصييرًا.
إضافة document.getElementsByTagName ('BODY') [0] .append (mainDom) ؛ حل مشكلتي.

كل ما علي فعله هو إزالة mainDom بمجرد معالجة html2canvas.

ال 12 كومينتر

نفس المشكلة عندما أحاول تخزين اللوحة القماشية في التخزين المحلي والارتباط بصفحة أخرى باستخدام React.js

<Link to="/system">
            <button className="submitButton"  onClick={this.captureMap} >SUBMIT </button>
</Link>

   captureMap(){
      html2canvas(document.querySelector(".mapboxgl-canvas")).then(canvas => {
        // document.body.appendChild(canvas);
        var image = canvas;
        if(typeof localStorage !== "undefined"){
          localStorage.setItem('mapImg',image.toDataURL());
        }
      });
    }

تواجه نفس المشكلة
const mainDom = document.createElement ('div') ،
mainDom.appendChild (domElem [0] .cloneNode (صحيح)) ؛ // domElem هو كائن دوم

عندما نمرر mainDom إلى html2canvas يظهر الخطأ أدناه.

html2canvas: خطأ في العثور على DIV في المستند المنسوخ
demo.html # / Demo / Widget: 1 غير معلوم (في الوعد) خطأ في العثور على DIV في المستند المنسوخ

HarishSonar هل يمكنك من فضلك تكرار المشكلة على jsfiddle؟

تم إصلاح هذا الآن.
يبدو أننا لا نستطيع العمل مع dom ككائن في الذاكرة ، فهو يتطلب تصييرًا.
إضافة document.getElementsByTagName ('BODY') [0] .append (mainDom) ؛ حل مشكلتي.

كل ما علي فعله هو إزالة mainDom بمجرد معالجة html2canvas.

فقط للزوار في المستقبل ، لدي أيضًا نفس المشكلة.

انتهى بي الأمر باستنساخ عقدة DOM ، وإدخالها كأول طفل من document.body ، واستخدام أنماط CSS position: absolute; top: -16384px; width: ${originalElementWidth} . هذا مفيد إذا كنت بحاجة إلى إجراء تغييرات على عقدة DOM قبل التقاطها كلقطة شاشة.

أيضًا ، niklasvh ، إليك jsfiddle إذا كنت لا تزال ترغب في إلقاء نظرة: https://jsfiddle.net/bLwya8sf/1/

مرحبًا ، لقد قابلت هذه المشكلة أيضًا. وعندما أقوم بتشغيل وظيفة html2canvas ، يتم إرسال جميع الطلبات في مشروعي. هل يمكنك إخباري بالحل? شكرًا جزيلاً. هذا هو الكود الخاص بي:
downBtn العام () {
var targetDom = document.querySelector ('# Box') ؛
var copyDom = targetDom.cloneNode (صواب) ،
document.body.appendChild (copyDom) ؛
html2canvas (copyDom). ثم (canvas => {
var imgData = canvas.toDataURL ('image / jpeg') ؛
var img = صورة جديدة () ؛
img.src = imgData ؛
img.onload = function () {
pdf.addImage (imgData، 'jpeg'، 0، 0، this.width * 0.225، this.height * 0.225) ؛
pdf.save ('pdf_2.pdf') ؛
} ؛
copyDom.remove () ،
}) ؛

نفس المشكلة هنا: اضطررت إلى تغليف SVG الخاص بي في div لتجنب هذه المشكلة ...

نفس المشكلة هنا: اضطررت إلى تغليف SVG الخاص بي في div لتجنب هذه المشكلة ...

هل يمكن الحديث عن كيفية القيام بذلك؟

تم إصلاح هذا الآن.
يبدو أننا لا نستطيع العمل مع dom ككائن في الذاكرة ، فهو يتطلب تصييرًا.
إضافة document.getElementsByTagName ('BODY') [0] .append (mainDom) ؛ حل مشكلتي.

كل ما علي فعله هو إزالة mainDom بمجرد معالجة html2canvas.

نعم ، يجب أن نعمل مع العنصر المُصَوَّر ، وليس العمل مع dom ككائن في الذاكرة

نفس المشكلة هنا: اضطررت إلى تغليف SVG الخاص بي في div لتجنب هذه المشكلة ...

هل يمكن الحديث عن كيفية القيام بذلك؟

بالتأكيد!
لقد قدمت مثالا هنا .
يعمل بشكل جيد في جميع المتصفحات باستثناء Internet Explorer 11: لا يعرض نهج html2canvas أي شيء في ملف PDF النهائي ... لا أعرف ما إذا كانت مشكلة html2canvas أو jsPDF ... أي تلميحات؟
شكرا لك

تم إصلاح هذا الآن.
يبدو أننا لا نستطيع العمل مع dom ككائن في الذاكرة ، فهو يتطلب تصييرًا.
إضافة document.getElementsByTagName ('BODY') [0] .append (mainDom) ؛ حل مشكلتي.
كل ما علي فعله هو إزالة mainDom بمجرد معالجة html2canvas.

نعم ، يجب أن نعمل مع العنصر المُصَوَّر ، وليس العمل مع dom ككائن في الذاكرة

لماذا لا تستخدم فقط رد الاتصال onclone؟ سيسمح لك هذا بالعمل مع documentClone قبل التقديم وإجراء تغييرات عليه.
على سبيل المثال ، لديك جدول قابل للتمرير ، مخطط جانت ، وتريد طباعة الجدول الكامل مع ظهور الصفوف المخفية في ملف PDF.

html2canvas(document.body, {
        onclone: function(documentClone) {
            // target elements you want to change on the "documentClone" object
        })
        .then(function(canvas) {
            // print canvas with e.g: jsPDF
        });
    };

لقد قمت بحل IE11 هنا .

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات