Var*_*run 10 javascript internet-explorer
我正在使用JavaScript编写本地文件,我正在使用IE.
我的代码如下:
function savefile( f,g){
var w = window.frames.w;
if( !w ) {
w = document.createElement( 'iframe' );
w.id = 'w';
w.style.display = 'none';
document.body.insertBefore( w );
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 d = w.document;
d.open( 'text/xml', 'replace');
d.charset = "UTF-8";
d.write(JWPFormToHTML(f));
d.close();
var name= g.filename.value;
if( d.execCommand( 'SaveAs', false , name ) )
{
g.filename.value=name;
//document.getElementById("filename").value="";
alert('File has been saved.' );
}
else
{
alert( 'The file has not been saved.\nIs there a problem?' );
}
w.close();
return false;
}
Run Code Online (Sandbox Code Playgroud)
我面临的问题是文件没有保存为UTF-8编码文件,尽管我已添加<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>到它.
请帮助我或建议一些替代我.
注意:我想在保存文件之前打开文件管理器,如果是这样的话execCommand.
您很可能会遇到这样的问题:Windows 通常以 utf-16 编码 unicode,而浏览器不关心考虑任何替代方案。
您可以采用 ActiveX 路线,FileSystemObject 支持文本流的 unicode 格式标志,但我敢打赌它是相同的 16 编码。然而,ADODB.Stream 对象包含一个 charset 属性,可以设置为各种格式,包括 utf-8
http://msdn.microsoft.com/en-us/library/ms526296(v=exchg.10).aspx
除此之外,我认为你最好的选择是写一个 bho 或更改规格。您当然需要在浏览器中手动更改更高的权限,但也许您很幸运,这是一个 Intranet 应用程序 :D
var adTypeBinary = 1;
var adTypeText = 2;
var adSaveCreateOverwrite = 2;
var stream = new ActiveXObject("ADODB.Stream");
stream.Type = adTypeText;
stream.Charset = "utf-8";
stream.Open();
stream.Write(txt);
stream.SaveToFile(path, adSaveCreateOverwrite);
Run Code Online (Sandbox Code Playgroud)
(*此代码未经测试,仅作为示例)