我正在开发一个Dashboard项目,其中的一个组件显示仪表盘上“缩小”窗口内的摘要表,其中用户输入的查询参数用于生成特定报告。Internet Explorer不兼容性v9和v8 [对象对象]〜其他
代码在Chrome,Firefox,Internet Explorer 11和10,Microsoft Edge中完美呈现,这里是正确呈现内容的示例。
不过,我的一些客户仍在使用Internet Explorer 9和8,我必须用代码兼容支持他们,并与这些版本,我有问题,如下面的例子显示的。
所以,可以看到,对于每个用户输入对象,由于某种原因[对象的对象]在上面的汇总表被显示。
用户输入变量存储作为隐藏标记,例如低于
的过程如下
1)I通过将存储的输入变量来填充该表服务器并返回一个带有结果的JSON对象
$.getJSON('/analyticsdashboard/SysoutSearch/GetSysout?' + $('#hdnParameters').val().slice($('#hdnParameters').val().indexOf('?') + 1)).done(function (result) {
var tbl = $("#tbl");
var tbody = $('#tbl>tbody');
2)然后我'去掉'出变量到特定对象
var jobName = getURLParameterForHtml('jobName', $('#hdnParameters').val());
var startDate = getURLParameterForHtml('startDate', $('#hdnParameters').val());
var startTime = getURLParameterForHtml('startTime', $('#hdnParameters').val());
var endDate = getURLParameterForHtml('endDate', $('#hdnParameters').val());
var endTime = getURLParameterForHtml('endTime', $('#hdnParameters').val());
var lastxDays = getURLParameterForHtml('lastxDays', $('#hdnParameters').val());
var tableName = getURLParameterForHtml('tableName', $('#hdnParameters').val());
var groupName = getURLParameterForHtml('groupName', $('#hdnParameters').val());
var applicationName = getURLParameterForHtml('applicationName', $('#hdnParameters').val());
var memberName = getURLParameterForHtml('memberName', $('#hdnParameters').val());
var owner = getURLParameterForHtml('owner', $('#hdnParameters').val());
var nodeId = getURLParameterForHtml('nodeId', $('#hdnParameters').val());
var endStatus = getURLParameterForHtml('endStatus', $('#hdnParameters').val());
var serverName = getURLParameterForHtml('serverName', $('#hdnParameters').val());
var orderId = getURLParameterForHtml('orderId', $('#hdnParameters').val());
下面
var getUrlParameter = function (sParam, url) {
//debugger;
//window.location.search
var sPageURL = decodeURIComponent(url.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : sParameterName[1];
}
}
}的getUrlParameter功能;
3)然后我测试包含数据,即不为空,并附加它们作为一行到汇总表体的物体,下面
if (jobName[1]) {
var newRow = "<tr><td></td><td>" + "Job Name" + "</td>" + "<td>" + jobName[1] + "<td></td></tr>" + tbody.append(newRow);
}
一个例子,我已经试过研究这个在这里SO,例如Internet Explorer Incompatibility - page just shows "[object Object]" WTH?
但一直无法找到解决方案或完全了解问题。
我想知道
1)为什么在IE9和IE8确实这个问题发生,而不是浏览器,火狐,IE 10和IE11,微软边缘?
2)我能做些什么来解决这个问题?
我建议花一些时间调试(IE9提供一个内置的调试器)或至少足够去建立一个[MCVE]用可运行的现场示例(使用堆栈片断时,'<>'工具栏按钮)。 –