在IE7下JS的ActiveXObject("Scripting.FileSystemObject")显示ActiveXObject未定义?

supking2009 2009-08-31 08:37:30
var fso, f1;
//saveFileName=prompt("please input save file name",saveFileName);
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile(saveFileNameSVG, true);
f1.WriteLine(code);
f1.Close();

代码如上,在IE6下可以运行,但是在IE7下就会显示ActiveXObject未定义,请问如何解决啊?
...全文
3570 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueSkyInMyEye 2011-10-19
  • 打赏
  • 举报
回复
mark
lilVon 2010-01-08
  • 打赏
  • 举报
回复
微软官方解释是:FileSystemObject属于那种“特别危险”的控件,即使在IE中提示它的威胁也不足以保证安全,所以微软把它标记为“Kill Bit”,只要有了这个标记,该控件就无法通过任何浏览器设置来运行。
如果要运行,需要修改注册表项目,例如[HKEY_LOCAL_MACHINE \SOFTWARE \Microsoft \Internet Explorer
\ActiveX Compatibility\"{8856F961-340A-11D0-A96B-00C04FD705A2}"]
"Compatibility Flag"=dword:00000400
红色部分是classid,就是你要修改的那个控件对应的
00000400,就表示它是个“Kill Bit”,改之即可

原文
The "Kill Bit"
On occasion, a control is installed that poses such a risk that it should not be accessible from within the browser under any circumstances. Simply marking the control as "unsafe for initialization" is not sufficient to ensure that the control will never load, even after a re-install scenario. This is where the "kill bit" comes in and it cannot be overridden with any of Internet Explorer's zone configurations.

The "kill bit" is a registry value that contains the CLSID of all controls that IE will not load. To set the "kill bit" on a specific control you must create or locate the following registry key:

[HKEY_LOCAL_MACHINE \SOFTWARE \Microsoft \Internet Explorer
\ActiveX Compatibility\"{8856F961-340A-11D0-A96B-00C04FD705A2}"]
"Compatibility Flag"=dword:00000400
The bolded text in quotes is the CLSID of the object that you are setting the kill bit for and the DWORD value of 00000400 prevents IE from loading the control.

原文链接:http://technet.microsoft.com/zh-cn/library/cc750862(en-us).aspx
supking2009 2009-08-31
  • 打赏
  • 举报
回复
IE6和IE7是不是在支持JS上有很大的区别啊?虽然说安全了,但貌似不是很方便了,如何才能让其在IE更高版本上兼容呢?
lcj_up 2009-08-31
  • 打赏
  • 举报
回复
不大清楚。。。
帮顶顶。。。
有经验的来解决。。。
supking2009 2009-08-31
  • 打赏
  • 举报
回复
大小写应该没有什么问题,在IE6下都可以运行啊。在IE7下就不行了
TeBieChi 2009-08-31
  • 打赏
  • 举报
回复
建议你查一下 这个Scripting.FileSystemObject 的大小写
supking2009 2009-08-31
  • 打赏
  • 举报
回复
IE级别降到最低也试过了,还是会出现未定义的现象。
我这个是一个SVG的绘图代码,需要把绘制出来的图像保存在本地机子上。
huguang 2009-08-31
  • 打赏
  • 举报
回复
js读写客户端文件本身就不建议,会有诸多麻烦。

你试试把IE的安全降到最低试试。
supking2009 2009-08-31
  • 打赏
  • 举报
回复
thank you,我回去再试试,单位的电脑上还是IE6,回去用自己的电脑试一下,如果这样可以解决就结贴了,这个是在C/S里用的,危险系数不是很高,呵呵。
原来我是搞C#的,但是SVG控件不给提供各种事件接口,用C#对其进行鼠标键盘事件操作很是麻烦,所以临阵突击学习JS在浏览器里解决了。
我对java基本上等于小白,呵呵。
【如鱼饮水】 2009-08-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 supking2009 的回复:]
用IE6会弹出消息,让用户选择。
但是用IE7就会直接弹出ActiveXObject未定义的错误消息。
[/Quote]

你要是按照我上面的设置
把里面关于ActiveX都设置 是会弹出提示的
里面好像关于ActiveX五六项吧···
楼主看清楚·~·
-----------------------但建议楼主不要这样·~
客户不会每次都去打开那个的···
楼主还是找别的办法,再说各种浏览器对js兼容不同
建议楼主 在java里面新建文件就好·~~·
supking2009 2009-08-31
  • 打赏
  • 举报
回复
用IE6会弹出消息,让用户选择。
但是用IE7就会直接弹出ActiveXObject未定义的错误消息。
【如鱼饮水】 2009-08-31
  • 打赏
  • 举报
回复
fso = new ActiveXObject("Scripting.FileSystemObject");
你用js new ActiveXObject
浏览器都会弹出消息 询问用户
用户要是禁止就....
supking2009 2009-08-31
  • 打赏
  • 举报
回复
这个打开试过了,还是不行,我询问了一下同学,他们说要在服务端设置允许fso,客户端貌似没法设置。结果搜索了一下相关问题也没找到一个比较理想的解决方法。我就是在本机使用,客户端和服务端都是本机,系统是XP,还望高手指点一下这个问题如何解决,最好能从代码上解决,使其能在IE6和IE7上兼容。
【如鱼饮水】 2009-08-31
  • 打赏
  • 举报
回复
是不是ie设置问题

你ie工具 -----Internet选项----安全-----自定义级别里查看下
是否禁用ActiveX插件和控件
supking2009 2009-08-31
  • 打赏
  • 举报
回复
难道这个帖子又结不了了么。。。。。。唉~

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧