访问被拒绝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器元素上做以下事情:
- 你不能读取元素的“值”,因为它保存文件名。
- 你不能通过JS启动文件select菜单。
- 你不能通过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'是您的域名。