如何用javascript实现“另存为”的功能的对话框
我想把的页面中的ActiveXObject对象另存为本地的文件,需要一个创建本地文件的对话框。各位有什么好的方法?就和input type="file"的对话框类似,可惜input type="file"是个只适合于上传文件用的对话框。 问题点数:0、回复次数:11Top
1 楼wunianyang(一片阳光)回复于 2003-12-03 12:30:40 得分 0
也就是说能不能在javascript中,调用windows的SaveFileDialog()对话框?Top
2 楼gjd111686(数字金刚)回复于 2003-12-03 13:00:39 得分 0
<object id=FileDialog style="left: 0px; TOP: 0px" classid="clsid:f9043c85-f6f2-101a-a3c9-08002b2f49fb">
<param name="_ExtentX" VALUE="847">
<param name="_ExtentY" VALUE="847">
<param name="_Version" VALUE="393216">
<param name="CancelError" VALUE="0">
<param name="Color" VALUE="0">
<param name="Copies" VALUE="1">
<param name="DefaultExt" VALUE="">
<param name="DialogTitle" VALUE="">
<param name="FileName" VALUE="">
<param name="Filter" VALUE="">
<param name="FilterIndex" VALUE="0">
<param name="Flags" VALUE="0">
<param name="FontBold" VALUE="0">
<param name="FontItalic" VALUE="0">
<param name="FontName" VALUE="">
<param name="FontSize" VALUE="8">
<param name="FontStrikeThru" VALUE="0">
<param name="FontUnderLine" VALUE="0">
<param name="FromPage" VALUE="0">
<param name="HelpCommand" VALUE="0">
<param name="HelpContext" VALUE="0">
<param name="HelpFile" VALUE="">
<param name="HelpKey" VALUE="">
<param name="InitDir" VALUE="">
<param name="Max" VALUE="0">
<param name="Min" VALUE="0">
<param name="MaxFileSize" VALUE="260">
<param name="PrinterDefault" VALUE="1">
<param name="ToPage" VALUE="0">
<param name="Orientation" VALUE="1"></object>
function OpenFile()
{
FileDialog.CancelError=true;
FileDialog.Filter="Word模板|*.doc|Word模板|*.dot";
FileDialog.ShowOpen();
var WordApp=new ActiveXObject("Word.Application");
WordApp.Application.Visible=false;
var Doc=WordApp.Documents.Open(FileDialog.filename);
Doc.Activate();
Doc.Parent.Options.InsertedTextColor=4;
Doc.Parent.Options.InsertedTextMark=2;
Doc.Parent.Options.DeletedTextColor=4;
Doc.Parent.Options.DeletedTextMark=1;
Doc.TrackRevisions=true;
Doc.PrintRevisions=true;
Doc.ShowRevisions=true;
Doc.Application.UserName="";
var Range=doc.Range();
Range.Select();
var Selection=WordApp.Selection;
Selection.Copy();
App.focus();
document.execCommand("Paste");
App.focus();
WordApp.DisplayAlerts=false;
Doc.Close();
WordApp.DisplayAlerts=true;
WordApp.Quit();
return false;
}Top
3 楼gjd111686(数字金刚)回复于 2003-12-03 13:02:04 得分 0
我用的是打开,你查一下,我记的有个属性如果是True就是打开,False就是另存Top
4 楼wunianyang(一片阳光)回复于 2003-12-03 17:55:01 得分 0
to:gjd111686(数字金刚)
我调用你说的方法试了不行,是不是我的用法有问题?还是因为客户端的安全性?
附源码如下:
<HTML>
<HEAD>
<TITLE>SaveAs TEST</TITLE>
<SCRIPT LANGUAGE="javascript">
//<!--
//var fso = new ActiveXObject("Scripting.FileSystemObject");
function saveFileDialog()
{
FileDialog.CancelError=true;
try{
FileDialog.title = "文件另存为";
FileDialog.Filter = "custom files (*.xls)|*.xls|All files (*.*)|*.*";
FileDialog.FilterIndex = 2;
//Microsoft JScript 运行时错误: 对象不支持此属性或方法
FileDialog.ShowSave();
alert("succes:"+ FileDialog.filename);
}
catch(e){
alert("false:"+ FileDialog.filename);
}
}
function OpenFile()
{
FileDialog.CancelError=true;
FileDialog.Filter="Word模板|*.doc|Word模板|*.dot";
//Microsoft JScript 运行时错误: 对象不支持此属性或方法
FileDialog.ShowOpen();
var WordApp=new ActiveXObject("Word.Application");
WordApp.Application.Visible=false;
var Doc=WordApp.Documents.Open(FileDialog.filename);
Doc.Activate();
Doc.Parent.Options.InsertedTextColor=4;
Doc.Parent.Options.InsertedTextMark=2;
Doc.Parent.Options.DeletedTextColor=4;
Doc.Parent.Options.DeletedTextMark=1;
Doc.TrackRevisions=true;
Doc.PrintRevisions=true;
Doc.ShowRevisions=true;
Doc.Application.UserName="";
var Range=doc.Range();
Range.Select();
var Selection=WordApp.Selection;
Selection.Copy();
App.focus();
document.execCommand("Paste");
App.focus();
WordApp.DisplayAlerts=false;
Doc.Close();
WordApp.DisplayAlerts=true;
WordApp.Quit();
return false;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<object id="FileDialog" style="left: 0px; TOP: 0px" classid="clsid:f9043c85-f6f2-101a-a3c9-08002b2f49fb">
<param name="_ExtentX" VALUE="847">
<param name="_ExtentY" VALUE="847">
<param name="_Version" VALUE="393216">
<param name="CancelError" VALUE="0">
<param name="Color" VALUE="0">
<param name="Copies" VALUE="1">
<param name="DefaultExt" VALUE="">
<param name="DialogTitle" VALUE="">
<param name="FileName" VALUE="">
<param name="Filter" VALUE="">
<param name="FilterIndex" VALUE="0">
<param name="Flags" VALUE="0">
<param name="FontBold" VALUE="0">
<param name="FontItalic" VALUE="0">
<param name="FontName" VALUE="">
<param name="FontSize" VALUE="8">
<param name="FontStrikeThru" VALUE="0">
<param name="FontUnderLine" VALUE="0">
<param name="FromPage" VALUE="0">
<param name="HelpCommand" VALUE="0">
<param name="HelpContext" VALUE="0">
<param name="HelpFile" VALUE="">
<param name="HelpKey" VALUE="">
<param name="InitDir" VALUE="">
<param name="Max" VALUE="0">
<param name="Min" VALUE="0">
<param name="MaxFileSize" VALUE="260">
<param name="PrinterDefault" VALUE="1">
<param name="ToPage" VALUE="0">
<param name="Orientation" VALUE="1">
</object>
<BR>SaveAs TEST<BR>
<BUTTON onclick="saveFileDialog()" >saveFileDialog</BUTTON><BR>
<BUTTON onclick="OpenFile()" >OpenFile</BUTTON><BR>
</BODY>
</HTML>Top
5 楼gjd111686(数字金刚)回复于 2003-12-03 18:22:08 得分 0
你看一下你的计算机上是否有此控件被注册.MSComDlg.CommonDialog是否存在Top
6 楼wunianyang(一片阳光)回复于 2003-12-03 18:48:20 得分 0
是OLE的还是ActiveX的,你是在哪里看他们有没有注册?你说的方法你试成功过吗?我的代码有问题吗?Top
7 楼ieghd(含笑一生)回复于 2003-12-22 18:27:32 得分 0
可以使用Top
8 楼possible_Y(████本人签名需要刮开,方可看到 )回复于 2003-12-22 20:36:51 得分 0
<script language="vbscript">
sub save_as()
Set objFSO = CreateObject("Scripting.FileSystemObject")
strSaveFileName = InputBox("Please enter the complete path where you want to save your script (for example, C:\Scripts\MyScript.vbs).")
If strSaveFileName = "" Then
Exit Sub
End If
Set objFile = objFSO.CreateTextFile(strSaveFileName)
objFile.WriteLine code.InnerText
objFile.Close
end sub
</script>
<div id="code">xxxxxxxxx</div>
<br><input type="button" onclick="vbscript:save_as()">Top
9 楼gbliang(海风)回复于 2003-12-23 09:14:52 得分 0
SaveFileDialog()Top
10 楼super76(瞻云听雨)回复于 2003-12-23 10:30:39 得分 0
那段代码可能有点问题,点击“saveFileDialog”总是提示:false:undefined的错误;点击“OpenFile”总是提示:脚本错误,对象不支持此属性或方法;我对javascript不太熟悉,各位高手再看看,究竟是什么样的错误?
Top
11 楼wunianyang(一片阳光)回复于 2003-12-25 19:03:41 得分 0
possible_Y兄的代码用是可以用,不过是VBScript的。可惜是还是没有实现“另存为”对话框的功能,我的目的就是要实现对话框的功能,而不是保存本地文件。谢了!Top




