我只想分享我在datatables组件中解决的错误.
显然,当datatables脚本出现问题时,它会调用_fnLog并将错误输出到控制台.
这是函数的代码:
function _fnLog(oSettings, iLevel, sMesg) {
var sAlert = (oSettings === null) ?
"DataTables warning: " + sMesg :
"DataTables warning (table id = '" + oSettings.sTableId + "'): " + sMesg;
if (iLevel === 0) {
if (DataTable.ext.sErrMode == 'alert') {
alert(sAlert);
}
else {
throw sAlert;
}
return;
}
else {
if (console !== undefined && console.log) {
console.log(sAlert);
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,这里的最后几行是检查"console"是否存在,然后执行console.log操作.在IE中,除非我们运行调试器,否则控制台对象不存在.这使得发现这个bug非常困难和烦人.无论如何,你不能像那样引用"控制台".IE会毫无例外地停止脚本.你必须用"窗口"来限定它,所以正确的脚本是
if (window.console !== undefined && console.log) {
window.console.log(sAlert);
}
Run Code Online (Sandbox Code Playgroud)
我希望这很有用,因为我只花了一个小时就可以了:)
的Eyal
我不知道这是一个错误/功能,但我需要找到一种方法使其工作.
要重新创建,请使用VS2012,打开一个启用了RIA服务的新SL5项目.创建另一个项目,添加一个简单的WCF服务(或启用SL的WCF)并添加一个接受或返回一个简单对象的方法(我有一个对象,其中包含一个字符串属性).尝试将其添加为SL项目的服务参考.您将在警告中收到此错误,其中包括:
自定义工具警告:未找到与Silverlight 5兼容的端点.除非通过构造函数提供端点信息,否则生成的客户端类将不可用.
并且实际上没有生成生成的代码.
我发现,如果我从服务方法中删除对象并使用简单的字符串/ int/bool,则添加引用就好了.此外,如果我将相同的服务添加到没有RIA的常规SL应用程序,一切都会像您期望的那样工作.一旦我在这个服务正在运行的应用程序上启用了RIA,并更新了服务引用,生成的代码就会再次消失.
我记得这曾经工作,因为我有使用RIA和外部WCF服务的项目.这是VS2012的新东西吗?有没有办法解决这个问题?
谢谢,
的Eyal