访问被拒绝IE8上的错误

我有一个HTML表单( upload.htm ),里面有一个HTMLfile upload控件。

<form id="frmupload" name="upload" enctype="multipart/form-data" action="uploadhandler.ashx" method="post"> <input id="uploader" name="uploadctrl" type="file"/> </form> 

在上面的页面中也有一个JavaScript方法,如下所示:

 function performUpload(){ document.getElementById('frmupload').submit(); } 

我从一个iframe里面调用这个页面( uploadpage.htm ):

 <iframe id="docframe" src="upload.htm" style="display:none"></iframe> 

我尝试从uploadpage.htm页面执行下面显示的语句:

 var i = document.getElementById('docframe'); i.contentWindow.performUpload(); 

我得到一个错误说, 访问被拒绝 ,我的debugging器暂停在我已经显示的第一个JavaScript函数。 这两个文件都在Web项目中的相同位置。 他们也有相同的域名。 为什么我得到这个错误呢?

当然,以前,我可以发布页面:当我没有设置HTML上传控件的name属性。 但是当我在HTML标记中设置了name属性之后,我得到了这个奇怪的错误。 为什么我没有第一次得到这个?

看看@这篇文章 – > “访问被拒绝”当脚本试图访问iframe中的IE8 ,但没有帮助。

由于安全原因,IE不允许操作来自javascript的type =“file”input元素。 设置文件名或调用单击事件来显示浏览器对话框将导致表单提交“访问被拒绝”错误 – Internet Explorer是聪明的记住什么方法已被调用。

类似的问题: http : //www.webdeveloper.com/forum/showthread.php?t=181272

传统上,为了安全考虑,对JavaScript input type="file" JavaScript访问受到严重限制。 AFAIK,你不能用JS在一个file upload器元素上做以下事情:

  1. 你不能读取元素的“值”,因为它保存文件名。
  2. 你不能通过JS启动文件select菜单。
  3. 你不能通过JS激活file upload控件的提交。

所有这一切都是为了防止恶意攻击,如通过JS在后台窃取文件。 我有一段时间没有使用input type="file"元素,但我最好的猜测是你也会在其他浏览器中遇到类似的问题(如果不是全部)。

你最好的select是基于Flash的解决scheme或者一些新的HTML5控件。

另外,这里是关于主题的官方参考:

http://msdn.microsoft.com/en-us/library/ms535263(v=vs.85).aspx

在上面的页面底部一路查看“社区内容”。

在两个HTML文件中 – 一个在框架中,另一个在框架中 – 尝试添加document.domain='example.com' ,其中'example.com'是您的域名。