Mar*_*rty 6 javascript jquery internet-explorer facebook-iframe
只花了大约5个小时来解决这个问题,所以我想分享我如何克服它会对某人有所帮助并节省一些时间(这似乎是一个非常新的修复 - 9小时前发布这个问题时 - 我在这里找到了).
我使用的是jQuery版本1.10.1.
概观
我正在构建一个Facebook标签应用程序.这是一个竞赛参赛表格,访客将输入一些信息并上传他们最近度假时拍摄的照片.在嵌入到Facebook之前,我将表单在所有浏览器中运行.
$.post().jQuery在此过程中指向的PHP脚本与表单本身位于同一个域中.<div>充当按钮.在此div中,有一个<input type="file" />不透明度设置为0 的字段..change()触发一个事件,<div>并显示"再次单击以上载"文本.我这样做而不是立即上传文件,因为在我的研究过程中,我了解到Internet Explorer不喜欢您在.change()附加到文件输入的处理程序中提交表单..submit().该表单以隐藏的iframe为目标.文件生成上传,完成后iframe触发.load()事件..contents().find("div").html()获取我在管理文件上载的PHP脚本中发回的一些字符串化JSON.JSON包含文件上载的状态,以及处理过的图像成功的URL.问题
当应用程序嵌入到Facebook时,该应用程序在除Internet Explorer之外的所有浏览器中都能正常运行.Internet Explorer在控制台中提供了以下内容:
我首先研究了第二个错误,并且遇到了我预计会遇到并且已经检查过的所有内容,例如:
我仔细检查了所有这些并确认它们不是这样的.然后我转到"访问被拒绝"错误,我遇到的所有材料都指向使用AJAX的跨域请求的问题.还有一些文章专门提到文件上传,但在这种情况下没有任何与我100%相关的内容.
题
当我尝试在嵌入到Facebook的页面中使用jQuery时,为什么我在Internet Explorer中收到这些错误?即使我删除了页面上的所有其他脚本(jQuery除外),我也得到了它们,所以我认为它是由我在页面上处理图像上传的隐藏iframe的存在触发的.
Mar*_*rty 14
首先,我删除了页面上的所有其他脚本,此时我只收到以下错误(显然是因为我不再尝试使用$):
在尝试了我在互联网上发现的十几件事(以及那些的组合)之后,我决定使用非缩小版的jQuery,以便我可以更准确地确定导致我的问题的那一行.上传后再在控制台中查看,我被指向第1513行,看起来像这样:
if ( parent && parent.frameElement ) {
Run Code Online (Sandbox Code Playgroud)
在这一行上面是一条评论,其中记录了我遇到的问题:
// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
Run Code Online (Sandbox Code Playgroud)
我用Google搜索jQuery #13936并遇到了这个页面,这表明我将以上行换成:
if ( parent && parent.attachEvent && parent !== parent.top ) {
Run Code Online (Sandbox Code Playgroud)
进行此更改后,我很高兴发现问题已解决,我的表单按预期工作.我再次检查了其他浏览器并确认它们仍然按预期工作.
| 归档时间: |
|
| 查看次数: |
2657 次 |
| 最近记录: |