2014-04-15 50 views
0

我有以下的代碼片段似乎比Safari 5的好工作在其他瀏覽器:Safari 5對HTMLInsertElement有問題嗎?

jQuery(function($){ 

    var fileDiv = document.getElementById("upload"); 
    var fileInput = document.getElementById("upload-image"); 

    fileInput.addEventListener("change",function(e){ 
     var files = this.files; 
    },false); 

    fileDiv.addEventListener("click",function(e){ 
     $(fileInput).show().focus().click().hide(); 
     e.preventDefault(); 
    },false); 
}); 

當用戶點擊,它會打開上傳圖像窗口,但是當選擇一個文件時,它不會觸發「改變」部分。據我所知,Safari 5似乎無法識別HTMLInputElement。在更新版本的Safari中,HTMLInputElement有一個變量列表(如果我在控制檯中打印它),但在Safari 5中它是空的。

我該如何解決這個問題?

+0

爲什麼要用'。點擊()',而不是'.change()'調用'change'事件? –

+0

'fileDiv.addEventListener(「點擊」'...打開用戶的窗口選擇一個文件。我相信那修訂'fileInput'這是應該由'change'事件被拾起 – Dabellator

+0

你試過結合你的事件處理程序使用jQuery?他們可能有一個內置的修復這一點。 –

回答

0

原來JavaScript時隱藏文件輸入的Safari 5不喜歡它。我刪除.hide()

,並在CSS補充說:

opacity: 0; 
height: 0; 
width: 0;