-1

ダッシュボードプロジェクトを開発しています。このプロジェクトのコンポーネントは、ダッシュボードの「縮小」ウィンドウ内にサマリーテーブルを表示します。特定の報告書。Internet Explorerの非互換性v9&v8 [オブジェクトオブジェクト]〜追加

このコードは、Chrome、Firefox、Internet Explorer 11および10のMicrosoft Edgeで完全にレンダリングされます。ここでは、正しくレンダリングされるものの例を示します。

Correctly Rendered

しかし、私のクライアントのいくつかは、まだのInternet Explorer 9と8を使用していて、私は互換性のあるコードでそれらをサポートする必要があり、それは次の例のように、私は問題を抱えているこれらのバージョンであります。サマリーテーブルの上に表示されるいくつかの理由で、[オブジェクトのオブジェクト]のために、各ユーザーの入力オブジェクトのために、見ることができるようにIncorrectly Rendered

、。

ユーザ入力変数は隠しタグとして記憶され、そして例えば

Hidden Input Variables

以下れるIは、に格納された入力変数を渡すことによって、テーブルを移入)

1を次のように処理されますサーバーと結果を含む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)私は、データ、すなわちを含むオブジェクトのテストが空でないと、私はSOでここにこれを調査しようとしたサマリー・テーブル本体、

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

以下の例に行としてそれらを追加し、たとえば、Internet Explorer Incompatibility - page just shows "[object Object]" WTH?

しかし、解決策を見つけることができず、問題を完全に理解できませんでした。私は

1を知りたい

)なぜこの問題は、Microsoftエッジ、クロム、Firefoxの、IE 10とIE11 IE9とIE8で発生していないのですか?

2)これを解決するにはどうすればよいですか?

+0

私は '>いくつかの時間のデバッグを費やし(IE9を内蔵デバッガを持っている)か、少なくとも実行可能なオンサイトの例で[MCVE]を作成するのに十分なをやって(スタックスニペットを使用して、' <お勧めしますツールバーボタン)。 –

答えて

0

この問題は、新しい行をサマリーテーブルに追加するためにHTMLをコーディングしなかったために発生しました。

以前私はそれがIE8とIE9で問題を引き起こし、このミスコーディングた

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

として、例えば、各新しい行を添付しました。

は、私は2つの別々のステートメントに新しい行と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

関連する問題