在項目中,有上傳本地圖片先預覽的功能。原先在本機IE6,IE7瀏覽器中可正常預覽的功能,但在將項目布暑到遠程服務器的時候,在IE7中不能預覽了。此問題,在之前同事的IE7訪問我機子預覽時也出現過,當時沒在意,認為系統不會有問題。
今天,上網找了許久,終于知道了,這原來是IE7中加強了安全限制。通過http訪問的頁面默認是沒有訪問用戶本機圖片文件的權限的,所以通過javascript獲取不了本機的圖片路徑等相關信息。網上也有幾種解決方案,一種是通過利用style的"DXImageTransform.Microsoft.AlphaImageLoader" 濾鏡來實現,而另一種,則是設置當前站點為安全站點即可。
由于,預覽還涉及到圖片旋轉等,利用"DXImageTransform.Microsoft.AlphaImageLoader"方式,確不知道該如何旋轉此濾鏡中的圖片,故暫時決定采用設置安全性方式,有勞用戶了。
一些莫名其妙的錯誤都是有源頭的。
收集的資料貼出來:
在IE6.0中,用戶可以在javascript中或許最終用戶本地圖片的長寬:
并且,在IE6.0中,在客戶端本地上傳圖片前可以通過Javascript/html預覽要上傳的圖片,并獲取圖片的文件大小:
Note: 上面的代碼最好在img圖片加載完畢后再取圖片的大小,例如:objImg.onreadystatechange()=function{ if(objImg.readystate=="complete")............}
經過查找資料才發現IE7在安全性方面做了提升,通過http訪問的頁面默認是沒有訪問用戶本機圖片文件的權限的,所以通過javascript獲取不了本機的圖片長寬,也不能將本機圖片地址賦值給<img>對象。如果將所訪問的站點放入"可信站點"列表中(IE7->工具->Internet選項->安全->可信站點),則可以如IE6一樣正常工作。
如果不想通過客戶將本站點設置為"可信"站點的方式來實現上傳圖片的預覽及獲取圖片長寬信息,則可以利用style的"DXImageTransform.Microsoft.AlphaImageLoader" 濾鏡來實現:
|