0

使用名为 Fineloader 的 JavaScript 插件来上传文件。我的代码如下,现场演示位于此处。出于某种原因,按钮和输入不显示使用 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>
4

2 回答 2

1

您的上传按钮有点奇怪。为什么要提供一个已经有文本输入的 div 以及一个按钮元素作为子元素?你知道吗?好的上传器还会添加一个文件输入元素作为按钮的子元素(在本例中为#uploader)?

我建议您将文本输入移到其他地方,尽管我不能肯定它会给您带来问题,因为在我看来一切都很好。虽然,我没有真正的 IE8 副本(我使用的是兼容模式,就像这里的其他海报一样)。

我建议您将上传按钮选项元素修改为如下所示:

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

并将您的文本输入放在其他地方,也许作为#uploader 的兄弟。

另外,不要为您的上传者“按钮”使用按钮元素。IE 中的事件委托问题将阻止输入子项(由 Fine Uploader 添加)接收单击事件。

于 2012-12-20T03:49:02.247 回答
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 代码即可。

于 2013-03-19T16:56:28.433 回答