在Internet Explorer 10中将文本保存在本地文件中 [英] Saving text in a local file in Internet Explorer 10

查看:148
本文介绍了在Internet Explorer 10中将文本保存在本地文件中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要能够将字符串保存到本地文件中。基于这里我得到了以下内容:

I need to be able to save a string into a local file. Based on the code in here I got the following going:

function saveTextAsFile(fileNameToSaveAs, textToWrite) {
var textFileAsBlob = new Blob([textToWrite], {
    type: 'text/plain'
});

var downloadLink = document.createElement("a");
downloadLink.download = fileNameToSaveAs;
downloadLink.innerHTML = "Download File";

if (true) { //window.webkitURL !== null) {
    // Chrome allows the link to be clicked
    // without actually adding it to the DOM.
    downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
} else {
    // Firefox requires the link to be added to the DOM
    // before it can be clicked.
    downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
    downloadLink.onclick = destroyClickedElement;
    downloadLink.style.display = "none";
    document.body.appendChild(downloadLink);
}

downloadLink.click();
}

这适用于Chrome和Firefox,但不适用于Internet Explorer 10

This works fine for Chrome and Firefox, but not for Internet Explorer 10 as

downloadLink.click();

给出:

SCRIPT5: Access is denied.

有没有解释/解决方案?

Is there any explanation/solution to this ?

谢谢!

推荐答案

Thx to mstubna,这是针对Chrome,FF和IE的解决方案> 9:

Thx to mstubna, here is a solution for Chrome, FF, and IE>9:

function saveTextAsFile(fileNameToSaveAs, textToWrite) {
  /* Saves a text string as a blob file*/  
  var ie = navigator.userAgent.match(/MSIE\s([\d.]+)/),
      ie11 = navigator.userAgent.match(/Trident\/7.0/) && navigator.userAgent.match(/rv:11/),
      ieEDGE = navigator.userAgent.match(/Edge/g),
      ieVer=(ie ? ie[1] : (ie11 ? 11 : (ieEDGE ? 12 : -1)));

  if (ie && ieVer<10) {
    console.log("No blobs on IE ver<10");
    return;
  }

  var textFileAsBlob = new Blob([textToWrite], {
    type: 'text/plain'
  });

  if (ieVer>-1) {
    window.navigator.msSaveBlob(textFileAsBlob, fileNameToSaveAs);

  } else {
    var downloadLink = document.createElement("a");
    downloadLink.download = fileNameToSaveAs;
    downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
    downloadLink.onclick = function(e) { document.body.removeChild(e.target); };
    downloadLink.style.display = "none";
    document.body.appendChild(downloadLink);
    downloadLink.click();
  }
}

这篇关于在Internet Explorer 10中将文本保存在本地文件中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆