我刚刚以599美元的价格购买了SyncFusion Essential Studio Enterprise。我使用他们的LightSwitch Silverlight组件没有任何问题,但在使用JavaScript组件时似乎有一些奇怪的问题。
这是来自全新(并且完全为空)LightSwitch HTML客户端的default.htm文件的所有内容,其中包含SyncFusion所需的修改:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<meta name="HandheldFriendly" content="true" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<title>Application1.HTMLClient</title>
<script type="text/javascript">
// Work around viewport sizing issue in IE 10 on Windows Phone 8
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
document.writeln("<style>@-ms-viewport { width: auto!important; }</style>");
}
</script>
<link rel="stylesheet" type="text/css" href="Content/light-theme-2.0.0.css" />
<link rel="stylesheet" type="text/css" href="Content/msls-light-2.0.0.css" />
<link rel="stylesheet" type="text/css" href="Content/jquery.mobile.structure-1.3.0.min.css" />
<link rel="stylesheet" type="text/css" href="Content/msls-2.0.0.min.css" />
<!-- SyncFusion -->
<link rel="stylesheet" type="text/css" href="http://cdn.syncfusion.com/js/flat-azure/ej.widgets.all-latest.min.css" />
</head>
<body>
<div id="msls-id-app-loading" class="ui-body-a msls-layout-ignore">
<div class="msls-app-loading-img"></div>
<span class="ui-icon ui-icon-loading"></span>
<div class="ui-bottom-load">
<div>Application1.HTMLClient</div>
</div>
</div>
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js"></script>
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/globalize/0.1.1/globalize.min.js"></script>
<script type="text/javascript" src="Scripts/winjs-1.0.min.js"></script>
<!--<script type="text/javascript" src="Scripts/jquery-1.9.1.min.js"></script>-->
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript" src="Scripts/jquery.mobile-1.3.0.min.js"></script>
<script type="text/javascript" src="Scripts/datajs-1.1.1.min.js"></script>
<script type="text/javascript" src="Scripts/Generated/resources.js"></script>
<script type="text/javascript" src="Scripts/msls-2.0.0.min.js"></script>
<script type="text/javascript" src="Scripts/Generated/generatedAssets.js"></script>
<script type="text/javascript">
$(document).ready(function () {
msls._run()
.then(null, function failure(error) {
alert(error);
});
});
</script>
<!-- SyncFusion -->
<script src="http://ajax.aspnetcdn.com/ajax/globalize/0.1.1/globalize.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
<script src="http://borismoore.github.io/jsrender/jsrender.min.js"></script>
<script src=" http://ajax.aspnetcdn.com/ajax/globalize/0.1.1/globalize.cultures.js "></script>
<script src="http://cdn.syncfusion.com/js/ej.widgets.all-latest.min.js"></script>
</body>
</html>
在IE11 / 10中,我收到以下错误消息:“无法加载模型:错误:堆栈空间不足”
在Chrome中,我收到类似消息:“无法加载模型:RangeError:超出最大调用堆栈大小”
在FireFox中,我也收到类似的消息:“无法加载模型:InternalError:过多的递归”
错误表明它可能是一个试图多次注册的组件,我的问题是为什么以及如何解决这个问题?
当然,这在标准HTML页面上运行正常(我正在查看提供的示例)...只是LightSwitch有问题。
修改 以下是我从Syncfusion收到的回复。如上所述,这没有任何影响:
启动电子邮件
感谢您使用Syncfusion产品。
我们能够重现上面报告的问题,我们已经分析了这个问题是由于msls-2.0.0.js中的错误数组迭代和不需要的Array的原型函数添加引起的,用于在ej.widget.all中查找lastItem .js文件。为了克服这个问题,我们准备了一项工作如下。
代码段:
<script src="http://cdn.syncfusion.com/js/ej.widgets.all-latest.min.js"></script>
<script type="text/javascript">
ej.buildTag = function (tag, innerHtml, styles, attrs) {
var tagName = /^[a-z]*[0-9a-z]+/ig.exec(tag)[0];
var id = /#([a-z]+[-_0-9a-z]+)/ig.exec(tag);
id = id ? id[id.length - 1] : undefined;
var className = /\.([a-z]+[-_0-9a-z ]+)/ig.exec(tag);
className = className ? className[className.length - 1] : undefined;
return $(document.createElement(tagName))
.attr(id ? { "id": id } : {})
.addClass(className || "")
.css(styles || {})
.attr(attrs || {})
.html(innerHtml || "");
}
</script>
我们已将此确认为缺陷,并已为此记录缺陷报告。我们建议您按照上述解决方法进行操作,直到我们即将发布的主要版本[2014 Vol-1]中有缺陷,预计将于3月底发布。在此之前,我们非常感谢您的宝贵耐心。
如果您需要进一步的帮助,请回复我们。
感谢/问候,
结束电子邮件
答案 0 :(得分:2)
这是msls-2.0.0.js中错误的数组迭代以及在ej.widget.all.js中查找lastItem的不需要的Array的原型函数添加的问题
为了使工作正常,您可以在$(document).ready
$(document).ready(function () {
delete Array.prototype.lastItem;
msls._run()
.then(null, function failure(error) {
alert(error);
});
});
修改强>
在上述解决方法之后,syncfusion控件无法正常工作。你能否就这个问题联系Syncfusion支持。
<强> EDIT2 强>
我找到了解决方法,使控件正常工作。将以下脚本粘贴到default.htm
中<script src="http://cdn.syncfusion.com/js/ej.widgets.all-latest.min.js"></script>
<script type="text/javascript">
ej.buildTag = function (tag, innerHtml, styles, attrs) {
var tagName = /^[a-z]*[0-9a-z]+/ig.exec(tag)[0];
var id = /#([a-z]+[-_0-9a-z]+)/ig.exec(tag);
id = id ? id[id.length - 1] : undefined;
var className = /\.([a-z]+[-_0-9a-z ]+)/ig.exec(tag);
className = className ? className[className.length - 1] : undefined;
return $(document.createElement(tagName))
.attr(id ? { "id": id } : {})
.addClass(className || "")
.css(styles || {})
.attr(attrs || {})
.html(innerHtml || "");
}
</script>