2014-02-18 69 views
9

下面的代碼會將畫布轉換爲圖像,並在除IE以外的瀏覽器中下載(我正在使用IE9).IE代碼在新選項卡中打開DataURL。但它不可下載。將畫布下載到使用Javascript的IE瀏覽器中的圖像

 if(navigator.appName == "Microsoft Internet Explorer") 
       { 
        somehtml1= document.createElement("img"); 
        somehtml1.id="imgid";somehtml1.name="imgname"; 
        somehtml1.src=canvas.toDataURL("image/png"); 
        document.body.appendChild(somehtml1); 

        window.win = open (somehtml1.src); 
        setTimeout('win.document.execCommand("SaveAs")', 500); 
        }   
       else 
         { 
          somehtml= document.createElement("a"); 
somehtml.href = canvas.toDataURL("image/png"); 
somehtml.download = "test.png"; 

} 

回答

5

快速簡單的用戶:只需打開一個顯示canvas.toDataURL的新選項卡。

今天的用戶瞭解如何右鍵單擊並保存。

試圖推送他們的另存爲按鈕只會在您的軟件中創建另一個潛在的故障點。 [這是我的2美分]。

示例代碼:

$("#save").click(function(){ 
     var html="<p>Right-click on image below and Save-Picture-As</p>"; 
     html+="<img src='"+canvas.toDataURL()+"' alt='from canvas'/>"; 
     var tab=window.open(); 
     tab.document.write(html); 
    }); 

[附加溶液]

可以使用FileSaver.js庫來讓用戶在畫布保存到本地驅動器。

https://github.com/eligrey/FileSaver.js

+0

由於..that是真正有用的。 –

+0

嗨,需求是自動推動保存爲圖像,一旦新標籤打開。 –

+1

瞭解...恕我直言,這是一個不好的要求。 – markE

25

下面是我使用的是什麼 - 不知道這需要什麼版本的IE,因爲我使用11.它使用IE和帆布斑點爲其他瀏覽器dataURL。在鉻和IE 11.

測試(畫布是畫布對象,鏈路是超鏈接對象)

  if (canvas.msToBlob) { //for IE 
       var blob = canvas.msToBlob(); 
       window.navigator.msSaveBlob(blob, 'dicomimage.png'); 
      } else { 
       //other browsers 
       link.href = canvas.toDataURL(); 
       link.download = "dicomimage.png"; 
      } 
+0

偉大的,它的工作在IE11 :)謝謝! –

+0

任何想法爲什麼圖像質量不如IE瀏覽器那麼好? –