swfupload在IE9中不顯示上傳按鈕的問題

問題描述:

使用swfupload.js上傳文件,IE8、火狐、谷歌瀏覽器中顯示正常,但是在IE9下不能顯示上傳按鈕。

解決方法:

打開swfupload.js文件找到307行開始的如下代碼:

// Private: getFlashHTML generates the object tag needed to embed the flash in to the document

SWFUpload.prototype.getFlashHTML = function (flashVersion) {

    // Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay

    return ['<object id="'this.movieName, '" type="application/x-shockwave-flash" data="', (this.support.imageResize ? this.settings.flash_url : this.settings.flash9_url), '" width="',this.settings.button_width, '" height="'this.settings.button_height, '" class="swfupload">',

                '<param name="wmode" value="'this.settings.button_window_mode, '" />',

                '<param name="movie" value="', (this.support.imageResize ?this.settings.flash_url : this.settings.flash9_url), '" />',

                '<param name="quality" value="high" />',

                '<param name="allowScriptAccess" value="always" />',

                '<param name="flashvars" value="' + this.getFlashVars() + '" />',

                '</object>'].join("");

};

 

 

 

將其替換爲:

 

 

// Private: getFlashHTML generates the object tag needed to embed the flash in to the document

SWFUpload.prototype.getFlashHTML = function (flashVersion) {

    // Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay

 

    //處理IE9中不顯示上傳按鈕的情況

    var classid = "";

    var Sys = {};

    var ua = navigator.userAgent.toLowerCase();

    if (window.ActiveXObject)

        Sys.ie = ua.match(/msie ([\d.]+)/)[1]

    if (Sys.ie && Sys.ie.substring(0, 1) == "9") {

        classid = ' classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';

    }

    return ['<object', classid, ' id="'this.movieName, '" type="application/x-shockwave-flash" data="', (this.support.imageResize ? this.settings.flash_url : this.settings.flash9_url), '" width="'this.settings.button_width, '" height="'this.settings.button_height, '" class="swfupload">',

                '<param name="wmode" value="'this.settings.button_window_mode, '" />',

                '<param name="movie" value="', (this.support.imageResize ?this.settings.flash_url : this.settings.flash9_url), '" />',

                '<param name="quality" value="high" />',

                '<param name="allowScriptAccess" value="always" />',

                '<param name="flashvars" value="' + this.getFlashVars() + '" />',

                '</object>'].join("");

};

注:以上代碼在IE7IE8IE9、火狐(Firefox 11.0)、谷歌(Google Chrome 17.0.963.83)瀏覽器中測試運行正常。


說明:修改前後的屬性this.support.imageResize,不同的版本可能沒有該屬性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章