<p>html2canvas: Ошибка поиска DIV Π² ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅</p>

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 24 янв. 2018  Β·  12ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: niklasvh/html2canvas

ΠžΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…:

ИспользованиС element.cloneNode (true) ΠΈΠ»ΠΈ angular.copy (element) Π² HTMLElement ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π² html2canvas Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ.

html2canvas: Ошибка поиска DIV Π² ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅
НСпойманный (Π² ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠΈ) Ошибка ΠΏΡ€ΠΈ поискС DIV Π² ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅.

Π₯арактСристики:

  • вСрсия html2canvas, протСстированная с использованиСм: 1.0.0-alpha.9 "
  • Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈ вСрсия: Chrome 63.0.3239.132
  • ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма: Mac

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

БСйчас это исправлСно.
ΠŸΠΎΡ…ΠΎΠΆΠ΅, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с 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 (true)); // domElem - это Π½Π΅ΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ dom

Когда ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ mainDom Π² html2canvas, появляСтся ошибка Π½ΠΈΠΆΠ΅.

html2canvas: Ошибка поиска DIV Π² ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅
demo.html # / Demo / Widget: 1 Uncaught (in promise) Ошибка ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ 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, всС запросы Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ. НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ½Π΅ ΠΎ своСм Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ? Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо. Π­Ρ‚ΠΎ ΠΌΠΎΠΉ ΠΊΠΎΠ΄:
public downBtn () {
var targetDom = document.querySelector ('# Box');
var copyDom = targetDom.cloneNode (true);
document.body.appendChild (copyDom);
html2canvas (copyDom) .then (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 ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°
Бпасибо

БСйчас это исправлСно.
ΠŸΠΎΡ…ΠΎΠΆΠ΅, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с 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 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ