2017-02-17 56 views
1

我正在嘗試將js應用程序的狀態(一個js對象)保存爲json字符串,以便稍後能夠加載該文件。無法將長json保存到Internet Explorer中的文件11

我使用此代碼

function SaveAsFile(t,f,m) { 
    try { 
    var b = new Blob([t],{type:m}); 
    saveAs(b, f); 
    } catch (e) { 
    window.open("data:"+m+"," + encodeURIComponent(t), '_blank',''); 
    } 
} 

function download(text) { 
    SaveAsFile(text,"filename.txt","application/json;charset=utf-8"); 
} 

$('#saveButton').on('click', function(e) { 
    download(JSON.stringify(appData)); 
}); 

現在奇怪的一部分:如果保存很短的JSON,如:

{ 
    "treeData": { 
    "id": "root", 
    "name": "Sicherung", 
    "data": { 
     "isLeaf": false, 
     "l": 0, 
     "A": 1, 
     "R": 0, 
     "Rsum": 0, 
     "I": 0, 
     "dUNormal": 0, 
     "danger": false, 
     "uRest": 24 
    }, 
    "children": [] 
    }, 
    "config": { 
    "voltage": 24, 
    "iFuse": 2, 
    "temperature": 30 
    } 
} 

它完美的罰款。

但是,當我嘗試保存更長的JSON,如:

{ 
    "treeData": { 
    "id": "root", 
    "name": "Sicherung", 
    "data": { 
     "isLeaf": false, 
     "l": 0, 
     "A": 1, 
     "R": 0, 
     "Rsum": 0, 
     "I": 0, 
     "dUNormal": 0, 
     "danger": false, 
     "uRest": 24 
    }, 
    "children": [{ 
     "id": "9a7fa260-5369-e041-a79f-408ec0f181cd", 
     "name": "___", 
     "data": { 
     "isLeaf": false, 
     "l": 0, 
     "A": 0, 
     "R": null, 
     "Rsum": null, 
     "I": 0, 
     "dUNormal": null, 
     "danger": false, 
     "uRest": null 
     }, 
     "children": [{ 
     "id": "00c6b684-8914-6535-2baf-b93d11fdaa1b", 
     "name": "___", 
     "data": { 
      "isLeaf": false, 
      "l": 0, 
      "A": 0, 
      "R": null, 
      "Rsum": null, 
      "I": 0, 
      "dUNormal": null, 
      "danger": false, 
      "uRest": null 
     }, 
     "children": [{ 
      "id": "24ebdc15-44c9-1dea-043d-7af2a696ccf3", 
      "name": "___", 
      "data": { 
      "isLeaf": false, 
      "l": 0, 
      "A": 0, 
      "R": null, 
      "Rsum": null, 
      "I": 0, 
      "dUNormal": null, 
      "danger": false, 
      "uRest": null 
      }, 
      "children": [{ 
      "id": "abd73f4e-896e-4c3f-d3f0-fe0905b0f63d", 
      "name": "___", 
      "data": { 
       "isLeaf": false, 
       "l": 0, 
       "A": 0, 
       "R": null, 
       "Rsum": null, 
       "I": 0, 
       "dUNormal": null, 
       "danger": false, 
       "uRest": null 
      }, 
      "children": [{ 
       "id": "907d4323-758e-e796-6f59-f45220fe4c72", 
       "name": "___", 
       "data": { 
       "isLeaf": false, 
       "l": 0, 
       "A": 0, 
       "R": null, 
       "Rsum": null, 
       "I": 0, 
       "dUNormal": null, 
       "danger": false, 
       "uRest": null 
       }, 
       "children": [{ 
       "id": "89a3000f-e915-fde6-6b20-02678ae70720", 
       "name": "___", 
       "data": { 
        "isLeaf": false, 
        "l": 0, 
        "A": 0, 
        "R": null, 
        "Rsum": null, 
        "I": 0, 
        "dUNormal": null, 
        "danger": false, 
        "uRest": null 
       }, 
       "children": [{ 
        "id": "301d3a64-fec2-f19d-8513-cf0fc2bc88be", 
        "name": "___", 
        "data": { 
        "isLeaf": false, 
        "l": 0, 
        "A": 0, 
        "R": null, 
        "Rsum": null, 
        "I": 0, 
        "dUNormal": null, 
        "danger": false, 
        "uRest": null 
        }, 
        "children": [{ 
        "id": "b477b73c-184b-eb61-973a-2fbb3617d2d7", 
        "name": "___", 
        "data": { 
         "isLeaf": false, 
         "l": 0, 
         "A": 0, 
         "R": null, 
         "Rsum": null, 
         "I": 0, 
         "dUNormal": null, 
         "danger": false, 
         "uRest": null 
        }, 
        "children": [] 
        }] 
       }] 
       }] 
      }] 
      }] 
     }] 
     }] 
    }] 
    }, 
    "config": { 
    "voltage": 24, 
    "iFuse": 2, 
    "temperature": 30 
    } 
} 

IE11提示,我不能這個文件下載,由於安全設置。

在鉻短和長jsons字符串工作。不幸的是,我需要它在ie11上工作。

  • 有沒有人有一個想法,如何解決這個問題?
  • 哪個安全設置會導致此錯誤?
  • 我可以用不同的方式/格式保存它嗎?

謝謝你的幫忙!

回答

0

如果其他人有這個問題,這是我的解決方案。

function download(text) { 
    if (isIE()) { 
     var targetPath = $('#ieTargetPath').val(); 

     var fso = new ActiveXObject("Scripting.FileSystemObject"); 

     var s = fso.CreateTextFile(targetPath, true, true); 
     s.WriteLine(text); 
     s.Close(); 
    } else { 
     ... 
    } 
} 

雖然我沒有找到實際的問題,我用不同的方法解決它

相關問題