このエラーの意味は何ですか? とそれを修正する方法
レンダリングしようとしている要素がドキュメント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
@niklasvhと
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」構造を使用しています。
最も参考になるコメント
jQueryを使用してDIVを見つける場合は、
html2canvas($( "#element")[0])。then(function(canvas){
$( "#element-out")。append(canvas);
});