2014-02-06 33 views
1

所以這裏是我即將做的事情: 我有一個頁面,用戶看到一張牌的表示後,用戶點擊保存卡,調用以下功能,數據應返回我的控制器爲了讓我把卡片保存爲圖像。我用html2canvas對於這一點,這裏是代碼:在mvc 4項目html2canavas錯誤

<div class="row download-card"> 
<div class="span12"> 
    <h2>Congratulations!</h2> 
    <h3>You may download your MyCard</h3> 
    <div id="card" class="card center"> 
     <ul> 
      <li style="float: left;position: absolute;display: block;padding-top: 200px; padding-left: 200px;text-align: left;font-family:arial;color:white;font-size:x-large;">@name @lastname<span style="padding-left:90px;font-size:x-large; color:#ffffff;font-family:arial;">@CardNo</span></li> 
      <li style="float: left;position: absolute;display: block;padding-top: 230px; padding-left: 200px;text-align: left;color:white;">Member since: @yearRegistered <span style="color:white; padding-left:10px;font-family:arial;">Valid Thru: @validThru</span></li> 
     </ul> 
    </div> 
    <button class="btn" type="button" onclick="screenShot('card')">Download</button> 
</div> 
</div> 

<script src="~/assets/userpanel/js/html2canvas.js"></script> 
<script type="text/javascript"> 


function screenShot(id) { 
html2canvas(id, { 
    proxy: "https://html2canvas.appspot.com/query", 
    onrendered: function(canvas) { 

     var img = canvas.toDataURL("image/png"); 
     var output = img.replace(/^data:image\/(png|jpg);base64,/, ""); 
     var output = encodeURIComponent(img); 

     var Parameters = "image=" + output + "&filedir=" + cur_path; 
     $.ajax({ 
      type: "POST", 
      url: "Profile/savecardPNG", 
      data: Parameters, 
      success : function(data) 
      { 
       console.log("screenshot done"); 
      } 
     }).done(function() { 
      //$('body').html(data); 
     }); 

    } 
}); 
} 
</script> 

所以頁面上的按鈕調用函數的截圖(「一卡通」),這可能火了,但我得到以下錯誤在控制檯:

Uncaught TypeError: Object c has no method 'getElementsByTagName' html2canvas.js:2191 _html2canvas.Preload html2canvas.js:2191

(匿名函數)

請讓我知道發生了什麼?

回答

1

很確定html2canvas需要一個dom元素,而不是一個字符串id。嘗試使用:

function screenShot(id) { 
    var elem = document.getElementById(id); 
    html2canvas(elem, {...}); 
} 
+0

我剛檢查了壞HTML,幸運的是有非! – Tondar

+0

您上面發佈的HTML缺少關閉div標籤。如果這不是完整的html,你應該編輯你的文章以包含完整的html,或者更好的做一個jsfiddle,這樣我們就可以看到它。 –

+0

哦,我的壞,我粘貼時錯過了結束div標籤!所以HTML就好了。 – Tondar