【问题标题】:Testing if an upload field will accept "click"测试上传字段是否接受“点击”
【发布时间】:2011-06-23 15:29:35
【问题描述】:

所以,我希望能够让人们点击一个链接,然后会打开一个带有文件的输入字段。但我只希望在浏览器支持它的情况下发生这种情况。正如in this answer 指出的那样,chrome 支持这一点。 Firefox 3.6 没有,但Firefox 4 should

我知道您可以经常测试是否支持 javascript 中的功能,但我不确定如何测试此功能。

如果您想了解我的意思,下面的代码会在单击链接时显示该功能。你也可以play with this on my page

<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Upload Field Click Test</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
        <script type="text/javascript">
        $(function() {
             var clicker = document.getElementById('clicker');
             var uploader = document.getElementById('uploader');
             clicker.addEventListener("click", function(e) {
                 uploader.click();
                 e.preventDefault();
             }, false);
        });
        </script>
    </head>
    <body>
        <form>
            <input type="file" id="uploader">
        </form>
        <a href="#" id="clicker">Should click the uploader</a>
    </body>
</html>

不起作用的事情:

  1. 测试 !uploader.click
  2. 查看 uploader.click() 是否抛出异常

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    您可以使用 JQuery 将 HTML 动态写入文档中的适当位置

    $("#mylinkID").after('<a href=" ">Whatever</a>');`
    

    并且链接将添加到包含 ID“mylinkID”的元素之后。如果不支持JS,则链接不显示。

    【讨论】:

    • 我不想检测浏览器是否有javascript。我想检测“当我在 input[type="file"] 上调用 click 函数时,浏览器是否打开文件上传对话框?”并且不嗅探用户代理
    • 我猜主要问题是不是 JQuery 的“addeventlistener”方法。我猜你需要一个 JQuery 等价物。有关详细信息,请参阅 [link]stackoverflow.com/questions/2398099/… 上的此线程。
    猜你喜欢
    • 1970-01-01
    • 2018-07-30
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多