我有一个分配给变量var doc的HTML Document对象。使用这个文档对象我将字符串值渲染到一个文本文件,其中值被渲染和写入,但在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()吗?
答案 0 :(得分:1)
问题无法从提供的代码中重新构建,但问题的核心似乎是您正在使用open()
方法生成要在内联框架中显示的新文档Document
方法1}}对象。这是相对良好的支持,但仅当创建的文档是HTML文档而不是纯文本文档时。
当您尝试使用text/plain
格式时,浏览器会以不同的方式处理事情。它们实际上创建了一个HTML文档,放在创建文档的DOM树中。它包含一个body
部分,它只包含您编写的文本或围绕它的pre
元素包装器,使其按原样显示。例如,旧版本的IE生成pre
元素,IE 11则不生成pre
元素。可能有人认为IE 11做了正确的事情:纯文本并不意味着文本应该按照分成线条的方式呈现。
无论如何,避免这种情况的方法是生成一个HTML文档并在代码中插入doc.open('text/html');
doc.write('<pre>' + str + '</pre>');
包装器,前提是您希望按原样显示文本:
{{1}}