jQuery输入文件点击方法和IE上拒绝访问

发布于 2024-12-02 02:15:09 字数 193 浏览 3 评论 0原文

我试图仅使用一个按钮作为输入文件,它在 Firefox、Chrome、Safari 中工作正常,但在 IE 中不行...提交表单时我总是收到“访问被拒绝”的消息。

代码:

$('#input_file').click();

有真正的解决办法吗?我在谷歌上浪费了大约2个小时,但我找不到它。

I'm trying to use only a button as input file, it works fine in Firefox, Chrome, Safari but not in IE... I always get 'access denied' when submitting the form.

The code:

$('#input_file').click();

Is there a real fix for it? I wasted about 2 hours on google but I can't find it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

‘画卷フ 2024-12-09 02:15:09

我找到了解决方法。
将按钮包裹在标签标签中,如下所示:

<label for="fileinput"><div class="button">Upload file</div></label>


<form>
  <input id="fileinput" name="file" type="file">
</form>

单击标签将触发文件输入,而不会使 Internet Explorer 中的表单无效
(在 IE9 和 IE10 中测试)

编辑:将此代码提供给 IE,并为其他浏览器保留 javascript 解决方案。单击标签时,Firefox 不会触发文件输入字段。

I found a way around it.
Wrap the button in label tags like this:

<label for="fileinput"><div class="button">Upload file</div></label>


<form>
  <input id="fileinput" name="file" type="file">
</form>

Clicking the label will trigger the file input without invalidating the form in internet explorer
(tested in IE9 & IE10)

EDIT: serve this code to IE and keep the javascript solution for other browsers. Firefox will not trigger the file input field when the label is clicked.

千と千尋 2024-12-09 02:15:09

我曾经看到过这段代码,我不记得在哪里,但它是一个解决方法

  if ($.browser.msie) {
        // IE suspends timeouts until after the file dialog closes
        $flUpload.click(function (event) {
            setTimeout(function () {
                changeFunc();
            }, 0);
        });
    }
    else {
        // All other browsers behave
        $flUpload.change(changeFunc);
    }

I once saw this piece of code, I don't remember where but it is a workaround

  if ($.browser.msie) {
        // IE suspends timeouts until after the file dialog closes
        $flUpload.click(function (event) {
            setTimeout(function () {
                changeFunc();
            }, 0);
        });
    }
    else {
        // All other browsers behave
        $flUpload.change(changeFunc);
    }
等风来 2024-12-09 02:15:09

IE 的安全沙箱“功能”。没有办法绕过它。对不起。我使用JQuery文件输入,但仍然要检测IE并使用IE基本输入,我花了很多时间寻找答案但没有找到任何答案。您可以使用 flash,这是 uploadify 用来绕过 IE 安全性的方法。推荐一下,这是一个非常好的插件。

Security sandbox "feature" of IE. There is no way to get around it. Sorry. I use the JQuery file input, but still have to detect IE and use the IE basic input, I have spend a lot of time looking for answers and haven't found any. You could use flash, which is what uploadify does to get around the security of IE. I recommend it, it's a pretty damn good plug-in.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文