Html2canvas: キャッチされていない(約束されている)提供された要素がドキュメント内にない

作成日 2017年12月14日  ·  23コメント  ·  ソース: niklasvh/html2canvas

このエラーの意味は何ですか? とそれを修正する方法

Needs More Information

最も参考になるコメント

jQueryを使用してDIVを見つける場合は、
html2canvas($( "#element")[0])。then(function(canvas){
$( "#element-out")。append(canvas);
});

全てのコメント23件

レンダリングしようとしている要素がドキュメントDOM内にありません

では、この問題を修正するにはどうすればよいですか?

0.5で問題ありませんが、1にアップグレードすると、このエラーが発生します

jsfiddleで例を共有してください

HTML本文の後にhtml2canvasjs(バージョン1)とアプリjsを読み込もうとしましたが、この問題は修正されました。

誰かがこの問題の修正を取得しましたか?ASP.Net MVCcshtmlページで使用しているときに同じ問題が発生します。

jQueryを使用してDIVを見つける場合は、
html2canvas($( "#element")[0])。then(function(canvas){
$( "#element-out")。append(canvas);
});

しかし、私はhtml2canvasを使用してグーグルマップの画像を撮ることができません(すべてのマップ画像は来ていません)、誰かがcshtmlで同じことをする方法を私に手伝ってもらえますか?

@cjcortez @RaghavPrabhuは、単一のElement代わりに要素のリストを提供するjQueryまたはその他のライブラリを使用していると仮定して、上記のsmartbeplのソリューションで修正しますか?

これは私のために働きます!
html2canvas($( '#div')。get(0))。then(function(canvas){
console.log(canvas);
});

うまくいったありがとう

@jeremielodiありがとう、これは私を

上記と同様のコードを試しましたが、発生するエラーはあまり関係がない可能性があります:Uncaught(in promise)undefined ... Promise denied(async)

私はまったく同じ問題を抱えていました-ボタンクリックでHTML2Canvasを呼び出したかったのです。 HTML2Canvas呼び出しをどのように記述しても、「Uncaught(in promise)undefined ... Promise required(async)」エラーが発生します。 最後に、promiseがどのように機能するかについて少し学び、解決策がキャッチを追加していることを発見しました。

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 */    
        });
}

警告の言葉、私は完全なjavascriptの初心者であり、promiseがどのように機能するかについてほとんど理解していません。 関数の外部で使用した場合、コードは.catch()なしで正常に機能しました。 どういうわけか、それをカプセル化すると、正しいDOMアクセスがなくなり、promiseが失敗すると思います。

@ikemikeこれはあなたを助けることができます
`` `html


html2canvas


@niklasvh

image

image

ths、それは動作します

これは私にとってはうまくいきます:

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");
    });
}

Chromeでは正常に動作しますが、IE11では動作しません... T_T;

キャッチされていない(約束されている):未定義のエラー

@bandacsこれに対する解決策を見つけましたか? スクリーンショットとまったく同じエラーが発生します。

1.0 alpha 12リリースを使用していますが、同じ問題が発生しています。 私はこれらすべての解決策を試しました。

私は@smartbeplによってこの解決策を試しました
html2canvas($( "#element")[0])。then(function(canvas){
$( "#element-out")。append(canvas);
});

@jeremielodiでこれを試しました
html2canvas($( '#div')。get(0))。then(function(canvas){
console.log(canvas);
});

また、leandrocgsiソリューションを試し、 @ ikemikeが提案するようにキャッチを追加してみました。

それを単純化し、すべての要素がDOMにロードされるようにするために、take_screenshot()という関数を配置します。

関数take_screenshot()
{{
html2canvas($( "。image__container")[0])。then(canvas => {
console.log( '私は私の心を失っています');
});
}
次に、javascriptコンソールから直接take_screenshot()を呼び出して、すべてがロードされていることを確認します。
Uncaught(in promise)undefinedと同じエラーが発生します。

https://github.com/niklasvh/html2canvas/issues/1313#issuecomment-377132089が直面しているのとまったく同じ問題があり
誰かがこの問題の解決策を見つけることができますか?

なぜ私は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

現在、別の呼び出し規約があります。
バージョン0.5は配列内のノードを予期していましたが、現在は直接指定しています。
バージョン0.5には「onrendered」オプションがありましたが、現在は「then」構造を使用しています。

このページは役に立ちましたか?
0 / 5 - 0 評価