最近一直在asp.net mvc下開發網站,今天碰到了很讓人鬱悶的問題。 我一個Controller裏的 action在頁面加載時被調用了2次。
起初懷疑JS問題,但屏蔽調JS後,問題依舊。沒辦法,把頁面裏的內容分別屏蔽的找了半天原 因,最終發現是因爲 頁面含有一個<img src="">。
<html>
<body>
...其他服務器端代碼...
<img src=""
/>
...其他服務器端代碼...
</body>
</html>
當調用這個頁面的URL 的時候,會發現,網頁被調用了2次。如果該訪問該網頁的URL 還帶有參數,那麼第一次調用有參數,第二次調用沒有參數。
Google了下,發現具體原因是,在img 對象的src 屬性是空字符串("")的時候,瀏覽器認爲這是一個缺省值,值的內容爲當前網頁的路徑。瀏覽器會用當前路徑進行再一次載入,並把其內容作爲圖像的二進制內 容並試圖顯示。
對於不同的瀏覽器測試後,發現對於有無src 或者src 是否爲空的情況,還不盡相同,測試結果如下表。
代碼 | Firefox | IE6 | IE7 |
<img src="" /> | 會重複載入 | 會重複載入 | 會重複載入 |
<img src /> | 會重複載入 | 正常 | 正常 |
<img /> | 正常 | 正常 | 正常 |
以後如果圖片路徑後來才賦值的,一定注意這個問題,不要加上src=""。