Internet Explorer toDataURL()の代替手段?
-
10-07-2019 - |
質問
したがって、<canvas>
要素に描画された画像データを保存する必要があります。そして、ほとんどの最新のブラウザーで動作するtoDataURL()メソッドがあります。
除く...推測した... Internet Explorer。
インターネットを検索しましたが、データを保存するためにSVG / VMLを使用する必要があると人々は言うところですが、どのように言及することはありません。 IEでSVG / VMLを使用したことがないので、Internet Explorerでキャンバス要素に描画された画像を保存するにはどうすればよいですか?誰でも経験はありますか?
現時点では、クライアントとサーバーの両方で描画コードを複製する必要があり、複雑になり始めています。したがって、クライアント(またはサーバー)側のcanvasタグに描画された画像を抽出できる方法があれば、それは確かに役立ちます。
ありがとう!
解決
VMLを取得できる場合もありますが、それはXML形式なので、おそらくこれは望んでいないものです。プラグインを使用せずにIEから画像を取得する方法はありません。
他のヒント
-
canvas.toDataURLはIE9で動作します。
-
古いIEで本当に必要な場合は..まあ..ただ引用するだけ
toDataURLは、使用されるメソッドの性質のためにサポートされません。 Explorer Canvas:VML。 VMLをビットマップにラスタライズする方法が見つかりませんでした JSを使用した画像であり、サーバーサイドスクリプトを使用していません。もしあなたが IEでtoDataURLが本当に必要な場合は、FxCanvasを使用する必要があります。 (http://code.google.com/p/fxcanvas/)またはFlashCanvas (http://flashcanvas.net/):Flashに基づく2つのソリューション。
http://code.google.com/p/explorercanvas/ issues / detail?id = 77
同じ問題がありました。私がやりたかったのは、キャンバスを画像に変換してから、新しいタブで開くことでした。変換することは問題ではないが、新しいリンクを開くことが問題であることがわかりました。画像を生成し、それをimgタグに入れ、それを新しいページに含めて解決しました。その後、このチュートリアルを使用して新しいページを開きました- http://www.javascripter.net/faq/writingt .htm
これは私がやったことです
var canvas = document.getElementById('canvas1');
var dataURL = canvas.toDataURL();
var width = parseInt($("#main").width()); //main is the div that contains my canvas
var height = parseInt($("#main").height());
newWindow("<img src=\"" + dataURL + "\"/>");
function newWindow(content) {
top.consoleRef = window.open("", "Organisational Structure",
"width="+width+",height="+height
+ ",menubar=0"
+ ",toolbar=1"
+ ",status=0"
+ ",scrollbars=1"
+ ",resizable=1")
top.consoleRef.document.writeln(
"<html><head><title>Console</title></head>"
+ "<body bgcolor=white onLoad=\"self.focus()\">"
+ content
+ "</body></html>"
)
top.consoleRef.document.close()
}