2016-08-12 85 views
2

我最近曾使用jSignature插件在ASP.NET Web窗體項目成功。我正在嘗試爲新的MVC4項目添加相同的功能。當我嘗試運行帶有jQuery功能的MCV視圖時,在調試模式下,jSignature.min.js文件引發以下錯誤:jSignature在ASP.NET Web Forms中工作,但不在MVC4中 - 爲什麼?

「Microsoft JScript運行時錯誤:Canvas元素不支持2d上下文。 jSignature無法繼續。「

兩個Web窗體項目和MVC4項目從同一臺客戶機上運行,​​無論是在調試模式下,從Visual Studio的同一個實例2010

我也注意到,在MVC4項目,錯誤列表中有50條消息引用了jSignature.min.js文件中定義的變量。

實施例:行35,列56 - 'B' 已定義。

誰能建議是什麼原因造成這一點,我需要做的就是jSignature在MVC4項目工作?

從MVC查看HMTL代碼如下:

@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>jSigTest</title> 

    <script type="text/javascript" src="../../Scripts/jquery-1.7.1.js"></script> 
    <script type="text/javascript" src="../../Scripts/jSignature.min.js"></script> 
    <script type="text/javascript"> 


     $(document).ready(function() { 
      $("#SignatureDiv").jSignature(); 
     }); 

    </script> 

</head> 
<body> 
    <div> 
     This is a jSignature Test Page. 

     <div id="SignatureDiv"> 
     </div>   
    </div> 
</body> 
</html> 
+1

在調試時,使用避免'.min.js'。試着用'.js來告訴我們錯誤是什麼。還告訴我們您的inplementation片段 – naveen

+0

您使用IE7,IE8進行測試呢? – naveen

+0

沒有jSignature.js文件只是一個jSignature.min.js文件。 – Childa75

回答

1

這不是一個MVC的問題,這是關於未引用後備腳本和伴隨瑞士法郎。這就是爲什麼我問你是否使用IE7-IE8。

問題:

jSignature使用帆布元件爲插件。 IE7-IE8不支持canvas並且導致錯誤。如果你看一下source,你可以看到這個

function initializeCanvasEmulator(canvas){ 
    if (canvas.getContext){ 
     return false 
    } else { 
     var window = canvas.ownerDocument.parentWindow 
     var FC = window.FlashCanvas ? 
      canvas.ownerDocument.parentWindow.FlashCanvas : 
      (
       typeof FlashCanvas === "undefined" ? 
       undefined : 
       FlashCanvas 
      ) 

     if (FC) { 
     //code omitted 
     } else { 
      throw new Error("Canvas element does not support 2d context. jSignature cannot proceed.") 
     } 
    } 
} 

其中在簡單的話,檢查畫布的支持,否則檢查回退FC(FlashCanvas),如果它沒有找到引發錯誤

分辨率:

這是你如何調用jSignature

<!-- you load jquery somewhere above here ... --> 
<!--[if lt IE 9]> 
<script type="text/javascript" src="path/to/flashcanvas.js"></script> 
<![endif]--> 
<script src="path/to/jSignature.min.js"></script> 
<div id="signature"></div> 
<script> 
    $(document).ready(function() { 
     $("#signature").jSignature(); 
    }); 
</script> 

您可以找到文件位置:https://github.com/willowsystems/jSignature下載的文件,你會從lib文件夾中獲得的文件。所需要的文件

  1. flashcanvas.js
  2. flashcanvas.swf

一定要正確地把兩個文件放在同一個文件夾,並設置路徑script src="path/to/flashcanvas.js"

+1

謝謝你對此的幫助。對此,我真的非常感激! – Childa75