2012-11-12 59 views
4

我们试图使用隐藏的iframe上传文件,脚本运行在除IE(9)以外的所有浏览器中。jQuery隐藏的iframe文件上传

  • 一个链接,用户点击
  • 链接触发文件输入打开
  • 文件输入变化触发的形式提交
  • 表单提交到iframe的

IE9的开发工具将返回以下错误消息:

SCRIPT5: Access is denied. 
jquery-latest.js, line 2977 character 6 

环顾四周,这似乎是一个与jQuery change()事件一起发生的错误。相当肯定它必须是一个简单的解决方案...非常感谢,如果你能够帮助!

HTML

<form class="hidden" action="index.php?upload" method="POST" id="myForm" enctype="multipart/form-data" target="hidden_iframe"> 
    <input type="file" name="userfile" id="userFile"> 
    <input type="submit"> 
</form> 

<iframe id="hidden_iframe" class="hidden" name="hidden_iframe" src="inc/temp.html"></iframe> 

的Javascript

$('#fake').on("click",function(e){ 
    e.preventDefault(); 
    $('#userFile').click(); 
    return false; 
}); 
$('#real').on("change",function(e){ 
    e.preventDefault(); 
    $("#myForm").submit(); 
}); 
+2

,则不应使用废弃的'.live()',但较新的'。对()' – ThiefMaster

+0

感谢您的提醒!虽然没有解决问题。 –

回答

0

也许你应该考虑一个替代解决方案?

通过隐藏的iframe进行上传并不是实现这一目标的最佳方式。

看一看这个真棒LIB代替:http://www.plupload.com/

+0

可能是一个解决方案;完全不确定如何在相同的上下文中使用它(例如,我们使用轮询上传栏)。 –

+0

使用plupload,你会得到一个真正的上传栏,而不是轮询几乎真正的进度条。看看例子。他们会把你吹走!他们甚至有拖放支持(如Gmail等)。你会立即开始运行。并且不,我不隶属于该项目:) –

+0

我使用自定义示例来实现我的实现:http://www.plupload.com/example_custom.php –

1

这是IE浏览器的安全设置。只需进入设置 - > Internet选项 - >安全 - >自定义级别并更改“其他”下的“将数据源访问跨域”下的安全设置为启用。

编辑:

我刚才看到了什么问题。你正在触发文件上传,你不允许这样做。您需要让用户手动单击文件选择器按钮。

+0

这不会是“解决”问题的好方法,因为您无法期望每个用户都能更改其设置。 **你是否知道这个任何复飞?** –

+0

也只是供参考,这并不能解决问题。 –

+0

实际上,只有在将文件上传到与运行脚本的域不同的域中时才会发生这种情况。所以这意味着没有弹出窗口并且没有本地主机到服务器的上传(并且显然没有跨站点上传) – alexandernst