Javascript 未使用JS处理Silverlight异常
我正在Firefox上调试Silverlight2。我在firebug中发现一个未处理的错误: 指向Silverlight.js第26行Javascript 未使用JS处理Silverlight异常,javascript,silverlight-2.0,Javascript,Silverlight 2.0,我正在Firefox上调试Silverlight2。我在firebug中发现一个未处理的错误: 指向Silverlight.js第26行 control = new ActiveXObject('AgControl.AgControl'); 我的html是 <head> <script src="Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> <script type="te
control = new ActiveXObject('AgControl.AgControl');
我的html是
<head>
<script src="Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/Silverlight.js"></script>
<script type="text/javascript">
function onSilverlightError(sender, args) {
var appSource = "";
if (sender != null && sender != 0) {
appSource = sender.getHost().Source;
}
var errorType = args.ErrorType;
var iErrorCode = args.ErrorCode;
var errMsg = "Unhandled j Error in Silverlight 2 Application " + appSource + "\n";
errMsg += "Code: " + iErrorCode + " \n";
errMsg += "Category: " + errorType + " \n";
errMsg += "Message: " + args.ErrorMessage + " \n";
if (errorType == "ParserError") {
errMsg += "File: " + args.xamlFile + " \n";
errMsg += "Line: " + args.lineNumber + " \n";
errMsg += "Position: " + args.charPosition + " \n";
}
else if (errorType == "RuntimeError") {
if (args.lineNumber != 0) {
errMsg += "Line: " + args.lineNumber + " \n";
errMsg += "Position: " + args.charPosition + " \n";
}
errMsg += "MethodName: " + args.methodName + " \n";
}
$("#errorLocation").html(errMsg);
}
</script>
</head>
<body>
<!-- Runtime errors from Silverlight will be displayed here.
This will contain debugging information and should be removed or hidden when debugging is completed -->
<div id="silverlightControlHost2">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
width="431" height="30" id="Xaml2">
<param name="source" value="/ClientBin/FileAudit.xap" />
<param name="onerror" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="2.0.31005.0" />
<param name="autoUpgrade" value="true" />
<param name="initParams" value="id=slPlugin1,embeddingTechnique=objectElement" />
<a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight"
style="border-style: none" />
</a>
</object>
<iframe style='visibility: hidden; height: 0; width: 0; border: 0px'></iframe>
</div>
<div id='errorLocation' style="font-size: small; color: Gray;">
</div>
</body>
函数onSilverlightError(发送方,参数){
var-appSource=“”;
if(发件人!=null&&sender!=0){
appSource=sender.getHost().Source;
}
var errorType=args.errorType;
var iErrorCode=args.ErrorCode;
var errMsg=“Silverlight 2应用程序中未处理的j错误”+appSource+“\n”;
errMsg+=“代码:”+iErrorCode+“\n”;
errMsg+=“类别:”+errorType+“\n”;
errMsg+=“消息:”+args.ErrorMessage+“\n”;
如果(errorType==“ParserError”){
errMsg+=“文件:”+args.xamlFile+“\n”;
errMsg+=“行:”+args.lineNumber+“\n”;
errMsg+=“位置:”+args.charPosition+“\n”;
}
else if(errorType==“RuntimeError”){
如果(args.lineNumber!=0){
errMsg+=“行:”+args.lineNumber+“\n”;
errMsg+=“位置:”+args.charPosition+“\n”;
}
errMsg+=“MethodName:”+args.MethodName+“\n”;
}
$(“#errorLocation”).html(errMsg);
}
为什么它不能在JS中处理并显示在errorLocation中?也很抱歉我的格式设置很糟糕。想出了一个解决方案
转到App.xaml.cs文件并重新处理了未处理的_异常函数 有了这个,再加上一点对这个JS的称呼,一切都很简单
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
// If the app is running outside of the debugger then report the exception using
// the browser's exception mechanism. On IE this will display it a yellow alert
// icon in the status bar and Firefox will display a script error.
// NOTE: This will allow the application to continue running after an exception has been thrown
// but not handled.
// For production applications this error handling should be replaced with something that will
// report the error to the website and stop the application.
e.Handled = true;
try
{
ThrowRightError(e.ExceptionObject);
//System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight a 2 Application " + errorMsg + "\");");
}
catch
{
}
}
private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
{
try
{
ThrowRightError(e.ExceptionObject);
//System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight 2 Application " + errorMsg + "\");");
}
catch (Exception)
{
}
}
private void ThrowRightError(Exception e)
{
string errorMsg = "";
var exLayer = -1;
//errorMsg += String.Format("<br>Layer {0}<hr>", exLayer);
Exception ex2 = e;
while (ex2 != null)
{
errorMsg += "Message : <br />" + ex2.Message + "<br />Data :<br />" + ex2.Data + "<br />StackTrace :<br />" + ex2.StackTrace;
exLayer++;
errorMsg += String.Format("<br>Layer {0}<hr>", exLayer);
ex2 = ex2.InnerException;
}
errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"<br />");
HtmlPage.Window.CreateInstance("foo2", new[] { errorMsg });
}
我还弄清楚了最初的错误是什么
ClientIdTextBlock.SetBinding(TextBox.TextProperty, ClientIdBinding);
文本块的文本框绑定…愚蠢的错误。它在IE和/或从Visual Studio或Blend运行时有效吗?
function foo2(theAlert) {
$("#errorLocation").html(theAlert);
}
ClientIdTextBlock.SetBinding(TextBox.TextProperty, ClientIdBinding);