var files = $("#file1").get(0).files;
for (var i = 0; i < files.length; i++) {
alert("檔案名稱:" + files.item(i).name);
alert("檔案大小:" + files.item(i).size);
}
2016年4月9日 星期六
2014年4月1日 星期二
2013年5月4日 星期六
IE針對Ajax的Cache
在實作AJAX非同步資料傳輸時,在IE瀏覽器上遇到非常大的問題,他會 cache 先前GET取回的資料,只有第一次 request 時會真正的去 server 讀取資料,導致畫面上的資料不會被更新,這在firefox及chrome是不會發生的。
解決方法有三個:
1. 針對 url 加上亂數參數,例如 var url = "...?date=" + new Date().getTime();
如此瀏覽器會認為這次查詢的內容與上次不同,IE也會再發送請求(並再做一次cache)
當然缺點就是 IE 會幫你做非常多的 cache,不算個好作法就是。
2.改用POST做 request。
3.阻止IE做 cache
var request= new XMLHttpRequest();
request.setRequestHeader("If-Modified-Since","0");
又或者是依各語言的寫法直接寫Meta
例如JSP頁面上增加 response.addHeader("Cache-Control", "no-cache");
推薦使用 If-Modified-Since 的作法
Ajax增加這個header後,會主動判斷要查詢的頁面的最後更新時間是否有變動
如果沒有就回傳304告知 local 端的cache已經是最新的,request會直接從local端載入
這個做法可以減少網路傳輸的需求量。
參考資料:
1. http://pvencs.blogspot.tw/2013/01/ie-ajax-cache.html
2.http://gdfan1114.wordpress.com/2005/12/20/ajax-ie-%E6%9C%83-cache-%E4%BD%8F%E5%9B%9E%E5%82%B3%E7%9A%84%E7%B5%90%E6%9E%9C/
解決方法有三個:
1. 針對 url 加上亂數參數,例如 var url = "...?date=" + new Date().getTime();
如此瀏覽器會認為這次查詢的內容與上次不同,IE也會再發送請求(並再做一次cache)
當然缺點就是 IE 會幫你做非常多的 cache,不算個好作法就是。
2.改用POST做 request。
3.阻止IE做 cache
var request= new XMLHttpRequest();
request.setRequestHeader("If-Modified-Since","0");
又或者是依各語言的寫法直接寫Meta
例如JSP頁面上增加 response.addHeader("Cache-Control", "no-cache");
推薦使用 If-Modified-Since 的作法
Ajax增加這個header後,會主動判斷要查詢的頁面的最後更新時間是否有變動
如果沒有就回傳304告知 local 端的cache已經是最新的,request會直接從local端載入
這個做法可以減少網路傳輸的需求量。
參考資料:
1. http://pvencs.blogspot.tw/2013/01/ie-ajax-cache.html
2.http://gdfan1114.wordpress.com/2005/12/20/ajax-ie-%E6%9C%83-cache-%E4%BD%8F%E5%9B%9E%E5%82%B3%E7%9A%84%E7%B5%90%E6%9E%9C/
2013年4月28日 星期日
Google API 取得 jquery 的 libraries
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script>
google.load("jquery", "2.0.0");
</script>
可手動更換jquery的版本
google.load("jquery", "2.0.0");
google api會載入以下lib
path: https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
path(u): https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js
如需UI的部份如下:
google.load("jqueryui", "1.10.2");
進入下面的連結,有更多資訊
http://code.google.com/intl/zh-TW/apis/libraries/devguide.html
2012年12月9日 星期日
視窗最大化
只要在onLoad或body後面加上以下程式碼,開啟視窗時就會最大化。
window.self.moveTo(0,0)
window.self.resizeTo(screen.availWidth,screen.availHeight)
ex:
<html>
<script>
window.onLoad = function(){
window.self.moveTo(0,0);
window.self.resizeTo(screen.availWidth,screen.availHeight);
}
</script>
<body>
.....................
</body>
</html>
ex:
<html>
<body>
<script>
window.self.moveTo(0,0);
window.self.resizeTo(screen.availWidth,screen.availHeight);
</script>
</body>
</html>
2012年11月25日 星期日
onresize-視窗大小變動時,會啟動的事件
在視窗變動時,會啟動一個事件--onresize,
所以如果有依些動作是在視窗改變時,必須要執行的程式、動作,
可以在onresize中去做執行。
本來我是想將function寫在.js裡,但發現好像不行,我也不知道為什麼不行?
上網goole了一下,似乎是必須寫一個變數去接這個function,
然後onresize時直接指向這格變數。
以下是程式範例:
var resizeWindow = function () {
document.getElementById("Test").style.left = 500;
document.getElementById("more").style.top = 500;
}
window.onresize = resizeWindow;
所以如果有依些動作是在視窗改變時,必須要執行的程式、動作,
可以在onresize中去做執行。
本來我是想將function寫在.js裡,但發現好像不行,我也不知道為什麼不行?
上網goole了一下,似乎是必須寫一個變數去接這個function,
然後onresize時直接指向這格變數。
以下是程式範例:
var resizeWindow = function () {
document.getElementById("Test").style.left = 500;
document.getElementById("more").style.top = 500;
}
window.onresize = resizeWindow;
2011年11月29日 星期二
Javascript:For 迴圈與梯形公式
一般工程師對於數字的加總,第一個想到的應該是For迴圈,
但其實還有一個更快的的方式,就是梯形公式,不管累加的數字有多大,
馬上就計算出來,相對的如果是用For迴圈,累加的數字愈大,
效能也就愈差。
For 迴圈:
var temp=0;
for(var i=1;i<=1000){
temp = temp + i;
}
梯形公式:
var temp=0;
temp = ((1+1000) * 1000)/2;
訂閱:
文章 (Atom)