代码之家  ›  专栏  ›  技术社区  ›  deostroll

IE8上的访问被拒绝错误

  •  45
  • deostroll  · 技术社区  · 14 年前

    我有一个HTML表单( 上传HTM )里面有一个HTML文件上传控件。

    <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 :

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

    我尝试从 上传页面 页:

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

    我有个错误说 访问被拒绝 我的调试器在我展示的第一个javascript函数处停止。这两个文件在Web项目中位于同一位置。他们也有相同的域名。为什么我会得到这个错误?

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

    看看这个帖子——> "Access is denied" when script tries to access iframe in IE8 但是没有帮助。

    3 回复  |  直到 10 年前
        1
  •  97
  •   Dunc    14 年前

    由于安全原因,IE不允许从javascript操作type=“file”输入元素。设置文件名或调用单击事件以显示浏览器对话框将导致表单提交上出现“拒绝访问”错误-Internet Explorer很善于记住调用了哪些方法。

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

        2
  •  13
  •   Volker E. Lee    10 年前

    传统上,JavaScript访问HTML input type="file" 由于安全问题受到严重限制。afaik,在file uploader元素上不能对js执行以下操作:

    1. 无法读取元素的“value”,因为它包含文件名。
    2. 不能通过JS启动文件选择菜单。
    3. 不能通过JS启动文件上载程序控件的提交。

    所有这些都是为了防止恶意攻击,比如通过JS在后台窃取文件。我没有玩过 input type=“文件” 元素,但我的最佳猜测是,在其他浏览器中也会遇到类似的问题(如果不是全部)。

    您的最佳选择是基于Flash的解决方案,或者是一些新的HTML5控件。

    此外,以下是有关主题的正式参考:

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

    在上一页的底部一直检查“社区内容”。

        3
  •  0
  •   TRiG    11 年前

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