最近要做一个功能,用js判断客户端的某个文件是否存在。仅需支持IE浏览器,使用ActiveXObject方法的时候发现一个奇怪的问题。
我写了一个html文件,file_test.html,内容如下:
<script type=”text/javascript”>
fso=new ActiveXObject(“Scripting.FileSystemObject”);
alert(fso);
</script>
只有这四行代码,IE8中测试,得到结果:为object.创建对象成功.
然后我又在同目录下写了一个PHP文件file_test.php,内容如下:
<?php
include(‘file_test.html’);
?>
仅仅是引入了这个html文件,测试结果为:服务器不能创建对象.
查看PHP的源代码,和我的html文件中的源代码一模一样,为什么就一个可以创建对象,一个不可以创建对象呢?它的提示信息说服务器不能创建对象,但是php要做的就是把这段代码输出到浏览器,然后让浏览器去创建对象啊.
我怀疑是服务器端做了什么处理,于是这样测试:
<?php
$fso=<<<eof
<script type=”text/javascript”>
fso=new ActiveXObject(“Scripting.FileSystemObject”);
alert(fso);
</script>
eof;
echo strlen($fso);
?>
可以正确输出字符串的长度,这是不是说明服务器端没有做处理呢?百思不得其解~~~
后来想到可能是创建对象被IE阻止了,于是在我的IE安全设置里面把我测试的URL设为了受信任的站点,测试OK了!