1

我正在使用一个 jquery 插件,它用 div 替换表单的文件输入,因此当您单击 div 时,文件浏览器会弹出。当您选择一个文件时,表单会自动提交,结果会进入隐藏的 iframe。所有这一切背后的想法是,您可以只拥有一张图片,上面写着“点击上传”,然后单击一个文件浏览器,当您选择文件时,它会在后台上传。

无论如何,我知道文件提交时我的 php 中发生了问题,但是由于结果被加载到隐藏的 iframe 中,我看不到错误是什么!

所以显然从iframe中删除了隐藏样式,但问题是插件在插件的javascript中添加了display:hidden。它确实:

var iframe = $(
        '<iframe '+
            'id="iframe'+id+'" '+
            'name="iframe'+id+'"'+
        '></iframe>'
    ).css({
        display: 'none'
    });

但是,如果我删除:

.css({
        display: 'none'
    });

位,然后整个事情似乎中断了,用“点击上传”点击图像不再打开文件浏览器。

插件 javascript 不长,但可能太长无法在此处发布,但您可以在此处查看:http: //liquidlizard.net/jquery.ocupload.js如果有人可以帮助我,那就太好了!

为什么只删除那个 css() 函数会阻止整个工作?还有其他方法可以查看隐藏 iframe 的内容吗?

编辑 这是评论中建议的jsfiddle。http://jsfiddle.net/VF6Qb/ 如果删除 .css({display:'none'}); 则从第 35 行开始的 javascript 中 然后单击 div 将不再打开文件浏览器对话框

4

1 回答 1

0

当您删除 时display:none;,它<iframe>会以某种方式与文件输入和单击的 div 重叠,因此它不会触发文件浏览器。您可以在我交换 iframe 和提交表单的 DOM 位置的地方测试这个小提琴,瞧——它有效。

但是,对于仅检查 iframe 中的错误文档,您不会使 iframe 可见,而只需在FireBug 的net panel中检查其源代码(和 HTTP 标头) 。

于 2013-04-13T14:31:38.323 回答