-1

我正在開發一個Dashboard項目,其中的一個組件顯示儀表盤上「縮小」窗口內的摘要表,其中用戶輸入的查詢參數用於生成特定報告。Internet Explorer不兼容性v9和v8 [對象對象]〜其他

代碼在Chrome,Firefox,Internet Explorer 11和10,Microsoft Edge中完美呈現,這裏是正確呈現內容的示例。

Correctly Rendered

不過,我的一些客戶仍在使用Internet Explorer 9和8,我必須用代碼兼容支持他們,並與這些版本,我有問題,如下面的例子顯示的。

Incorrectly Rendered

所以,可以看到,對於每個用戶輸入對象,由於某種原因[對象的對象]在上面的彙總表被顯示。

用戶輸入變量存儲作爲隱藏標記,例如低於

Hidden Input Variables

的過程如下

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)我能做些什麼來解決這個問題?

+0

我建議花一些時間調試(IE9提供一個內置的調試器)或至少足夠去建立一個[MCVE]用可運行的現場示例(使用堆棧片斷時,'<>'工具欄按鈕)。 –

回答

0

這個問題是由於我錯過了編碼HTML以將新行添加到彙總表而造成的。

以前我每次追加新行,例如,作爲

if (jobName[1]) { 
        var newRow = "<tr><td></td><td>" + "Job Name" + "</td><td>" + jobName[1] + "</td></tr>" + tbody.append(newRow); 
       } 

這是造成IE8和IE9的問題,這個小姐編碼。

我已經通過分割新行和tbody.append(NEWROW)分成兩個單獨的語句改變了代碼,一個例子如下

if (jobName[1]) { 
       var newRow = "<tr>" + "<td></td>" + "<td>" + "Job Name" + "</td><td>" + jobName[1] + "</td>" + "</tr>"; 
       tbody.append(newRow); 
      } 

和我的「精縮」窗口現在正確地在IE8渲染> IE11,Microsoft Edge,Chrome和Firefox。

Okay in IE8 and IE9