-1

我有一个分配给变量 var doc 的 HTML 文档对象。使用此文档对象,我将字符串值呈现到文本文件中,其中值正在呈现和写入,但在 IE11 浏览器中格式不正确,但在 IE8、IE10、ff n chrome 中工作正常。请找到我的以下代码:

  function savecontent(str){
  var filename = "data.txt";
  var str=replaceAll(str,'<doublequote>','"');
  var w = window.frames.w;
  if( !w )
     {
             w = document.createElement( 'iframe' );
             w.id = 'w';
             w.style.display = 'none';
             document.body.insertBefore( w,null );
             w = window.frames.w;
             if( !w )
             {
                     w = window.open( '', '_temp', 'width=100,height=100' );
                     if( !w )
                     {
                             window.alert( 'Sorry, could not create file.' ); return false;
                     }
             }
     }

  var doc = w.document;
  doc.open('text/plain');
  doc.charset="iso-8859-1";
  doc.write(str);
  doc.close(doc.write(str));
  w.close();
  if( doc.execCommand( 'SaveAs', false, filename ) )
     {
             window.alert("Please save the file.");
     }
}

我的 str 可能是employee_firstname、employee_lastname、employee_id、employee_salary、employee accountno、employee_dob 等。

在 IE11 中呈现为,

employee_firstname,employee_lastname,
employee_id,employee_salary,employee accountno,employee_dob

但正如预期的那样,数据在 IE8,ff n chrome 中以以下格式呈现:

employee_firstname,employee_lastname,employee_id,
employee_salary,employee accountno,employee_dob

我在 IE8、FF n chrome 等其他浏览器中注意到的不同之处在于,与其他浏览器相比,IE11 中换行的发生方式不同。谁能告诉我如何在 IE11 浏览器的文本文件或 document.write() 的任何替代方案中正确格式化数据呈现?

4

1 回答 1

1

这个问题不能完全从提供的代码中重建,但问题的核心似乎是您正在使用对象的open()方法生成一个要在内联框架中显示的新文档Document。这得到了较好的支持,但仅当创建的文档是 HTML 文档而不是纯文本文档时。

当您尝试使用text/plain格式时,浏览器会以不同的方式处理事情。他们实际上创建了一个 HTML 文档,放置在创建文档的 DOM 树中。它包含一个body部分,该部分要么仅包含您编写的文本,要么包含pre围绕它的元素包装,从而使其按原样显示。例如,旧版本的 IE 会生成pre元素,而 IE 11 则不会。有人可能会说 IE 11 做了正确的事情:纯文本并不意味着文本应该按原样呈现关于分割成行的内容。

无论如何,避免这种情况的方法是生成一个 HTML 文档并在pre代码中插入包装器,前提是您希望按原样显示文本:

doc.open('text/html');
doc.write('<pre>' + str + '</pre>');
于 2015-01-22T09:36:50.930 回答