IE7 / 8不显示fineuploader按钮

时间:2012-12-19 22:25:36

标签: javascript css internet-explorer-8 internet-explorer-7 fine-uploader

使用名为fineloader的JavaScript插件上传文件。我的代码位于下方,live demo is located here。由于某种原因,按钮和输入不显示使用IE7和我的笔记本电脑使用IE8,但显示使用我的虚拟机和IE8以及IE9 / FF /等。任何使其可见的帮助都将非常感激。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Fine Uploader - Basic</title>
    </head>
    <style>
        #upload-block {width: 280px;}
        button.gray {
            border:1px solid black;
            color: black;
            height: 25px;
        }
    </style>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script src="fineuploader-3.1.js"></script>
    <script>
        $(document).ready(function() {
            var uploader = new qq.FineUploaderBasic({button: document.getElementById('uploader')});
        });
    </script>

    <body>
        <div>
            <label>FILE:</label>
            <div id="upload-block">
                <div id="uploader">
                    <input type="text" readonly id="myFilename">
                    <button class="gray">BROWSE</button>
                </div>
            </div>
        </div>
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

您的上传按钮有点奇怪。为什么提供一个已经有文本输入的div和一个按钮元素作为子元素?您是否知道上传器还添加了一个文件输入元素作为按钮的子节点(在本例中为#uploader)?

我建议你把文字输入移到其他地方,虽然我不能肯定地说这对你造成了问题,因为我看起来都很好。虽然,我没有IE8的真实副本(我使用的是兼容模式,就像这里的其他海报一样)。

我建议您将上传按钮选项元素修改为这样:

<div id="uploader">
   <div>BROWSE</div>
</div>

将你的文本输入到其他地方,也许作为#uploader的兄弟。

此外,请勿为您的上传器“按钮”使用按钮元素。 IE中事件委派的问题将阻止输入子节点(由Fine Uploader添加)接收单击事件。

答案 1 :(得分:1)

我正在使用fineuploader 3.3,但我相信这是同样的问题。实际上,它与你的代码无关,但是一个精细上传代码中的一个小错误 - 按钮就在那里,它只是不可见:),它可以被点击(在“文件”标签下面)

找到文件util.js和行

/**
 * Sets styles for an element.
 * Fixes opacity in IE6-8.
 */
css: function(styles) {
    if (styles.opacity !== null){
        if (typeof element.style.opacity !== 'string' && typeof(element.filters) !== 'undefined'){

并改为

/**
 * Sets styles for an element.
 * Fixes opacity in IE6-8.
 */
css: function(styles) {
    if ((styles.opacity !== null) && (typeof styles.opacity !== 'undefined')) {
        if (typeof element.style.opacity !== 'string' && typeof(element.filters) !== 'undefined'){

(只有第一个IF发生了变化,其余的代码才更容易找到)

在你的fineuploader-3.1.js中,它有点难以找到,它只是在文件的开头,只需仔细更改IF代码。