【问题标题】:Using a decoy breaks my upload on IE. Why?使用诱饵会破坏我在 IE 上的上传。为什么?
【发布时间】:2011-12-10 05:00:00
【问题描述】:

我正在使用Valums AJAX Uploader,它工作得很好,即使在 IE 中也是如此。

当我尝试使用诱饵隐藏 Valums 标记时出现问题。

$('.control.addphoto:not(.controlactive)').live('click', function(){
    $('#upload input[type=file]').click();
});

所以,真正的输入是隐藏的,但单击我的控件会激活它。 “选择文件”对话框在 IE 中显示得很好,但是一旦我单击确定,文件上传就会失败(它甚至没有到达服务器)。当我不使用诱饵时(即当我直接点击输入时)它工作得很好。

在 Chrome 和 Firefox 中一切正常。

为什么会这样?我无法理解,因为它只是一个诱饵,它正在调用实际输入。有什么线索吗?有什么办法可以让诱饵更“透明”?

obs: 刚刚发现诱饵在 Opera 上不起作用(不会打开对话框)。同样,直接单击输入也可以正常工作。由于我使用的是 jquery(应该是跨浏览器),这不应该有效吗?


编辑

  • Opera 本质上实际上不允许通过诱饵触发输入行为。

  • 使用 Kevin B 的替代方案,我已经能够解决我的问题。另一方面,我仍然不知道为什么 IE 会发生这种情况,为了知识,我会保持这个问题的开放。

【问题讨论】:

    标签: javascript jquery html ajax upload


    【解决方案1】:

    对此的一种解决方案是使触发器元素不可见,但不隐藏,例如赋予它与它后面的元素相同的背景颜色。然后你可以把它放在“诱饵”的顶部,这样看起来你正在点击诱饵,而你实际上是在点击文件输入。

    【讨论】:

    • 那为什么它可以在 chrome 和 firefox 上运行呢? (顺便说一句,您的解决方案实际上很有趣)
    • 我不确定,我认为这与不可能触发锚标记上的原生点击事件的原因相同。
    • 你是如何隐藏输入的?如果我使用 display: none 隐藏输入,则单击事件不会触发在 google chrome 中打开浏览对话框,但它总是在 IE 中打开,无论是 8 还是 9。我正在构建一个小提琴来重现你的情况。
    • 但除此之外,IE 仍然带来对话框!但不知何故它不够“透明”并破坏了上传=/
    • 是的,这是真的。因为我用“可见性:隐藏”和“位置:绝对”隐藏它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2013-06-25
    • 2013-06-07
    相关资源
    最近更新 更多