剛好看到...雖然不符合要用的需求但或許之後用的到..先記錄下來
Private Sub Form_Load()
Timer1.Interval = 1000'把timer1設置成每隔一秒种觸發一次timer事件
End Sub
Private Sub Timer1_Timer()
Static a As Integer, b As Integer'全局變量
a = 1
If a = 60 Then b = 1:a=0'如果a=60了,就證明已經過了一分鐘了。那麼b再加上+1,如果b=5那麼就已經過了5分鐘了。
If b = 5 Then
'這後面寫你想執行的代碼
end if
End Sub
2012年11月12日 星期一
2012年11月9日 星期五
asp網頁編碼big5->utf8處理辦法
處理很久搞不定的big5 透過post將資料傳到utf-8的頁面會出現中文亂碼問題...
總算找到個解決方法..記錄起來
轉錄自:Itano Tomomi
asp網頁採用的編碼(encoding)是用系統預設的語系,在windows 2003底下是big5。那該如何將big5轉成utf8呢?這很簡單(不是團結的故事),使用Session.CodePage跟Server.UrlEncode()就可以了。
sourceURL = "http://itanotomomi.akb48/板野友美.htm"
dim i,utf8URL,tmp,encodingStr
for i=1 to Len(sourceUrl)
tmp = mid(sourceUrl, i, 1)
if asc(tmp) < 0 or asc(tmp) > 128 then '將ascii碼在1~128以外的字元當成中文編成utf8
Session.CodePage="65001" '先將網頁設成utf8
encodingStr = Server.UrlEncode(tmp) '將中文編成utf8
Session.CodePage="950" '再將網頁設為Big5
utf8URL = utf8URL & encodingStr
else
utf8URL = utf8URL & tmp
end if
next
dim i,utf8URL,tmp,encodingStr
for i=1 to Len(sourceUrl)
tmp = mid(sourceUrl, i, 1)
if asc(tmp) < 0 or asc(tmp) > 128 then '將ascii碼在1~128以外的字元當成中文編成utf8
Session.CodePage="65001" '先將網頁設成utf8
encodingStr = Server.UrlEncode(tmp) '將中文編成utf8
Session.CodePage="950" '再將網頁設為Big5
utf8URL = utf8URL & encodingStr
else
utf8URL = utf8URL & tmp
end if
next
為什麼要這樣做呢?因為asp使用Server.UrlEncode()進行編碼是採用系統預設的語系,若不更改網頁的語系為utf8,直接使用Server.UrlEncode()的話,會編成big5。而且千萬記得,編成utf8後,要再將Session.CodePage指定回big5,不然以big5為主的asp網站會整個亂掉。
不過若到上面為止,就想直接將encodingStr用response.redirect送出的話,會發現還是找不到網頁。那是因為response.redirect在導向的過程會採用系統預設的語系再編碼過一次...orz...
我目前解決的方式是不用response.redirect,改使用javascript的window.open()。不過缺點是會被瀏覽器擋住。
response.write "<script type='text/javascript'>window.open('" & utf8URL & "');</script>"
以上是純ASP的解決方法,接著介紹透過ASP.NET的解法。
首先是ASP端,將url編碼丟給ASP.NET。這邊採用預設編成big5就可以了,反正主要處理在ASP.NET端。
sourceURL = "http://itanotomomi.akb48/板野友美.htm"
Response.Redirect "http://itanotomomi.akb48/passUTF8.aspx?q=" & Server.UrlEncode(sourceUrl)
Response.Redirect "http://itanotomomi.akb48/passUTF8.aspx?q=" & Server.UrlEncode(sourceUrl)
接著在passUTF8.aspx.cs的Page_Load(若使用VB則是passUTF8.aspx.vb)中撰寫下面的語法。
string sourceURL = Request.Url.Query;
sourceURL = HttpUtility.UrlDecode(sourceURL, Encoding.GetEncoding("big5")); //將asp用big5傳來的url decode
sourceURL = sourceURL.Replace("?q=", "");
Response.Redirect(sourceURL);
sourceURL = HttpUtility.UrlDecode(sourceURL, Encoding.GetEncoding("big5")); //將asp用big5傳來的url decode
sourceURL = sourceURL.Replace("?q=", "");
Response.Redirect(sourceURL);
因為ASP.NET使用utf8,所以將asp傳來的url編成utf8後就可以直接使用Response.Redirect()丟出去了。
2012年10月10日 星期三
Youtube iframe影片蓋住網頁浮動div elem
之前用時就有發現此問題,但當初youtube還可以選舊版程式碼,所以沒特別注意去處理。
最近客戶使用時沒辦法點選舊版程式碼(object),只好用iframe的方式卻發現會蓋住div圖層。
網路上找到了方法,只能說youtube不可能沒發現這問題,但大概就是懶得幫你加這句上去-.-
轉錄自:YIJEN'S BLOG
Before
<iframe width="420" height="315" src="http://www.youtube.com/embed/678uZ7S_tKs" frameborder="0" allowfullscreen=""></iframe>
After
<iframe width="420" height="315" src="http://www.youtube.com/embed/678uZ7S_tKs?wmode=opaque" frameborder="0" allowfullscreen=""></iframe>
最近客戶使用時沒辦法點選舊版程式碼(object),只好用iframe的方式卻發現會蓋住div圖層。
網路上找到了方法,只能說youtube不可能沒發現這問題,但大概就是懶得幫你加這句上去-.-
轉錄自:YIJEN'S BLOG
bug fixed code demo
Before
<iframe width="420" height="315" src="http://www.youtube.com/embed/678uZ7S_tKs" frameborder="0" allowfullscreen=""></iframe>
After
<iframe width="420" height="315" src="http://www.youtube.com/embed/678uZ7S_tKs?wmode=opaque" frameborder="0" allowfullscreen=""></iframe>
2012年9月23日 星期日
asp.net 抓取本月第一天&本月最後一天日期
百度知識家找到的 很實用 筆記起來..
// 本月的第一天 DateTime firstDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1); //本月的最后一天 DateTime lastDate = firstDate.AddMonths(1).AddDays(-1); int weekDay = (short)DateTime.Today.DayOfWeek; //本周一的日期 DateTime monday = DateTime.Today.AddDays(1 - weekDay); //本周六的日期 DateTime saturday = DateTime.Today.AddDays(6 - weekDay);
2012年9月11日 星期二
ASP.NET 如何取得 Request URL 的各個部分
轉自:
我們在開發網頁應用程式,時常需要去解析網址(Request.Url)的每個片段,進行一些判斷。例如說 "http://localhost:1897/News/Press/Content.aspx/123?id=1#toc ",我們想要取得網址裡第一層目錄的名字(News)用以判斷不同的頁面標題(Page Title)。
我看很多人都用字串的 IndexOf 方法與 Substring 方法:
Request.Url.PathAndQuery.Substring(1, Request.Url.PathAndQuery.IndexOf("/", 1)-1)
這實在太埋沒 .NET 的強大設計了,事實上在 Request 物件就已經提供很多方便的屬性(Property)可供取得網址的片段。
底下這張表就是各種跟 Browser Request 的網址相關的屬性與用法:| 網址:http://localhost:1897/News/Press/Content.aspx/123?id=1#toc | |
| Request.ApplicationPath | / |
| Request.PhysicalPath | D:\Projects\Solution\web\News\Press\Content.aspx |
| System.IO.Path.GetDirectoryName(Request.PhysicalPath) | D:\Projects\Solution\web\News\Press |
| Request.PhysicalApplicationPath | D:\Projects\Solution\web\ |
| System.IO.Path.GetFileName(Request.PhysicalPath) | Content.aspx |
| Request.CurrentExecutionFilePath | /News/Press/Content.aspx |
| Request.FilePath | /News/Press/Content.aspx |
| Request.Path | /News/Press/Content.aspx/123 |
| Request.RawUrl | /News/Press/Content.aspx/123?id=1 |
| Request.Url.AbsolutePath | /News/Press/Content.aspx/123 |
| Request.Url.AbsoluteUri | http://localhost:1897/News/Press/Content.aspx/123?id=1 |
| Request.Url.Scheme | http |
| Request.Url.Host | localhost |
| Request.Url.Port | 1897 |
| Request.Url.Authority | localhost:1897 |
| Request.Url.LocalPath | /News/Press/Content.aspx/123 |
| Request.PathInfo | /123 |
| Request.Url.PathAndQuery | /News/Press/Content.aspx/123?id=1 |
| Request.Url.Query | ?id=1 |
| Request.Url.Fragment | |
| Request.Url.Segments | / News/ Press/ Content.aspx/ 123 |
所以當你看了這張表之後,你還會想用 Request.Url.PathAndQuery.Substring(1, Request.Url.PathAndQuery.IndexOf("/", 1)-1) 這種寫法嗎?
用這樣寫 Request.Url.Segments[1].Replace("/", "") 不是又短又直覺嗎? ^_^
以下是產生以上表格的程式碼:
protected void Page_Load(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); sb.Append("<table cellpadding=3 cellspacing=0 border=1>"); sb.Append("<tr><td colspan=2>"); sb.Append("網址:http://localhost:1897/News/Press/Content.aspx/123?id=1#toc"); sb.Append("</td></tr>"); // Request.ApplicationPath sb.Append("<tr><td>"); sb.Append("Request.ApplicationPath"); sb.Append("</td><td>"); sb.Append("<b>" + Request.ApplicationPath + "</b>"); sb.Append("</td></tr>"); // Request.PhysicalPath sb.Append("<tr><td>"); sb.Append("Request.PhysicalPath"); sb.Append("</td><td>"); sb.Append("<b>" + Request.PhysicalPath + "</b>"); sb.Append("</td></tr>"); // System.IO.Path.GetDirectoryName(Request.PhysicalPath) sb.Append("<tr><td>"); sb.Append("System.IO.Path.GetDirectoryName(Request.PhysicalPath)"); sb.Append("</td><td>"); sb.Append("<b>" + System.IO.Path.GetDirectoryName(Request.PhysicalPath) + "</b>"); sb.Append("</td></tr>"); // Request.PhysicalApplicationPath sb.Append("<tr><td>"); sb.Append("Request.PhysicalApplicationPath"); sb.Append("</td><td>"); sb.Append("<b>" + Request.PhysicalApplicationPath + "</b>"); sb.Append("</td></tr>"); // System.IO.Path.GetFileName(Request.PhysicalPath) sb.Append("<tr><td>"); sb.Append("System.IO.Path.GetFileName(Request.PhysicalPath)"); sb.Append("</td><td>"); sb.Append("<b>" + System.IO.Path.GetFileName(Request.PhysicalPath) + "</b>"); sb.Append("</td></tr>"); // Request.CurrentExecutionFilePath sb.Append("<tr><td>"); sb.Append("Request.CurrentExecutionFilePath"); sb.Append("</td><td>"); sb.Append("<b>" + Request.CurrentExecutionFilePath + "</b>"); sb.Append("</td></tr>"); // Request.FilePath sb.Append("<tr><td>"); sb.Append("Request.FilePath"); sb.Append("</td><td>"); sb.Append("<b>" + Request.FilePath + "</b>"); sb.Append("</td></tr>"); // Request.Path sb.Append("<tr><td>"); sb.Append("Request.Path"); sb.Append("</td><td>"); sb.Append("<b>" + Request.Path + "</b>"); sb.Append("</td></tr>"); // Request.RawUrl sb.Append("<tr><td>"); sb.Append("Request.RawUrl"); sb.Append("</td><td>"); sb.Append("<b>" + Request.RawUrl + "</b>"); sb.Append("</td></tr>"); // Request.Url.AbsolutePath sb.Append("<tr><td>"); sb.Append("Request.Url.AbsolutePath"); sb.Append("</td><td>"); sb.Append("<b>" + Request.Url.AbsolutePath + "</b>"); sb.Append("</td></tr>"); // Request.Url.AbsoluteUri sb.Append("<tr><td>"); sb.Append("Request.Url.AbsoluteUri"); sb.Append("</td><td>"); sb.Append("<b>" + Request.Url.AbsoluteUri + "</b>"); sb.Append("</td></tr>"); // Request.Url.Scheme sb.Append("<tr><td>"); sb.Append("Request.Url.Scheme"); sb.Append("</td><td>"); sb.Append("<b>" + Request.Url.Scheme + "</b>"); sb.Append("</td></tr>"); // Request.Url.Host sb.Append("<tr><td>"); sb.Append("Request.Url.Host"); sb.Append("</td><td>"); sb.Append("<b>" + Request.Url.Host + "</b>"); sb.Append("</td></tr>"); // Request.Url.Port sb.Append("<tr><td>"); sb.Append("Request.Url.Port"); sb.Append("</td><td>"); sb.Append("<b>" + Request.Url.Port + "</b>"); sb.Append("</td></tr>"); // Request.Url.Authority sb.Append("<tr><td>"); sb.Append("Request.Url.Authority"); sb.Append("</td><td>"); sb.Append("<b>" + Request.Url.Authority + "</b>"); sb.Append("</td></tr>"); // local Request.Url.LocalPath sb.Append("<tr><td>"); sb.Append("Request.Url.LocalPath"); sb.Append("</td><td>"); sb.Append("<b>" + Request.Url.LocalPath + "</b>"); sb.Append("</td></tr>"); // Request.PathInfo sb.Append("<tr><td>"); sb.Append("Request.PathInfo"); sb.Append("</td><td>"); sb.Append("<b>" + Request.PathInfo + "</b>"); sb.Append("</td></tr>"); // Request.Url.PathAndQuery sb.Append("<tr><td>"); sb.Append("Request.Url.PathAndQuery"); sb.Append("</td><td>"); sb.Append("<b>" + Request.Url.PathAndQuery + "</b>"); sb.Append("</td></tr>"); // Request.Url.Query sb.Append("<tr><td>"); sb.Append("Request.Url.Query"); sb.Append("</td><td>"); sb.Append("<b>" + Request.Url.Query + "</b>"); sb.Append("</td></tr>"); // Request.Url.Fragment // 原則上你應該無法從 Request.Url.Fragment 取得任何資料,因為通常 Browser 不會送出 #toc 這個部分 sb.Append("<tr><td>"); sb.Append("Request.Url.Fragment"); sb.Append("</td><td>"); sb.Append("<b>" + Request.Url.Fragment + "</b>"); sb.Append("</td></tr>"); // Request.Url.Segments sb.Append("<tr>"); sb.Append("<td>"); sb.Append("Request.Url.Segments"); sb.Append("</td>"); sb.Append("<td>"); string[] segments = Request.Url.Segments; foreach (string s in segments) { sb.Append("<b>" + s + "</b>"); sb.Append("<br/>"); } sb.Append("</td>"); sb.Append("</tr>"); sb.Append("</table>"); ltlTable.Text = sb.ToString(); }
注意事項
- 當程式部署(Deploy)到 IIS 6 之後,假設你的網址是http://localhost:1897/News/Press/Content.aspx/123 ? ,IIS 不知為何會將問號 ( ? ) 給刪除掉,以致於 ASP.NET 使用 Request.Url.Query 是空字串!如果你的程式有判斷到這部分時就要特別注意,因為照理說應該會抓到才對!不知道是不是 IIS 6 的 Bug ?
Request.ServerVariables 所有元素的用法
| 變數 | 說明 |
| Request.ServerVariables["ALL_HTTP"] | Client端發送的所有 HTTP 標題文件 |
| Request.ServerVariables["ALL_RAW"] | 顯示未處理表格中所有的標題 |
| Request.ServerVariables["APPL_MD_PATH"] | 顯示 ISAPI DLL 的 (WAM) Application 的資料庫路徑 |
| Request.ServerVariables["APPL_PHYSICAL_PATH"] | 顯示與資料庫路徑相應的物理路徑 |
| Request.ServerVariables["AUTH_PASSWORD"] | 該值输入到客户端的鑒定對話中 |
| Request.ServerVariables["AUTH_TYPE"] | 用户訪問受保護的脚本時,服務器用於檢驗用户的驗證方法 |
| Request.ServerVariables["AUTH_USER"] | 未被鑒定的用户名 |
| Request.ServerVariables["CERT_COOKIE"] | 客户端驗證的唯一 ID,以字串方式返回 |
| Request.ServerVariables["CERT_FLAGS"] | 如有客户端驗證,则 bit0 為 1 如果客户端驗證的驗證人無效(不在伺服器許可的 CA 列表中),bit1 被設置為 1 |
| Request.ServerVariables["CERT_ISSUER"] | 用户驗證中的頒布者字段(O=MS,OU=IAS,CN=user name,C=USA) |
| Request.ServerVariables["CERT_KEYSIZE"] | 安全套接字層連接關键字的位數,如 128 |
| Request.ServerVariables["CERT_SECRETKEYSIZE"] | 伺服器驗證私人關键字的位數,如 1024 |
| Request.ServerVariables["CERT_SERIALNUMBER"] | 用户驗證的序列號字段 |
| Request.ServerVariables["CERT_SERVER_ISSUER"] | 伺服器驗證的頒發者字段 |
| Request.ServerVariables["CERT_SERVER_SUBJECT"] | 伺服器驗證的主字段 |
| Request.ServerVariables["CERT_SUBJECT"] | 客户端驗證的主字段 |
| Request.ServerVariables["CONTENT_LENGTH"] | 客户端發出内容的長度 |
| Request.ServerVariables["CONTENT_TYPE"] | 内容的數據類型 |
| Request.ServerVariables["GATEWAY_INTERFACE"] | 伺服器使用的 CGI 規格的修訂 |
| Request.ServerVariables["HTTP_HeaderName"] | HeaderName 儲存在標題文件中的值 |
| Request.ServerVariables["HTTPS"] | 如果請求穿過安全通道(SSL),則返回 ON。如果請求來自非安全通道,则返回 OFF。 |
| Request.ServerVariables["HTTPS_KEYSIZE"] | 安全套接字層連接關键字的位數,如 128。 |
| Request.ServerVariables["HTTPS_SECRETKEYSIZE"] | 伺服器驗證私人關键字的位數。如 1024。 |
| Request.ServerVariables["HTTPS_SERVER_ISSUER"] | 伺服器驗證的頒發者字段 |
| Request.ServerVariables["HTTPS_SERVER_SUBJECT"] | 伺服器驗證的主字段 |
| Request.ServerVariables["INSTANCE_ID"] | 文本格式 IIS 實例的 ID |
| Request.ServerVariables["INSTANCE_META_PATH"] | 響應请求的 IIS 實例的資料庫路徑 |
| Request.ServerVariables["LOCAL_ADDR"] | 返回接受請求的伺服器地址 |
| Request.ServerVariables["LOGON_USER"] | 用户登入 Windows NT® 的帳號 |
| Request.ServerVariables["PATH_INFO"] | 客户端提供的額外路徑信息 |
| Request.ServerVariables["PATH_TRANSLATED"] | PATH_INFO 轉換後的版本,該變數獲取路徑並進行必要的由虛擬至物理的映射 |
| Request.ServerVariables["QUERY_STRING"] | 查询 HTTP 請求中問號(?)後的信息。 |
| Request.ServerVariables["REMOTE_ADDR"] | 發出请求的遠程主機的 IP 地址 |
| Request.ServerVariables["REMOTE_HOST"] | 發出請求的主機名稱 |
| Request.ServerVariables["REMOTE_USER"] | 用户發送的未映射的用户名字串 |
| Request.ServerVariables["REQUEST_METHOD"] | 該方法用於提出請求 |
| Request.ServerVariables["SCRIPT_NAME"] | 執行脚本的虛擬路徑 |
| Request.ServerVariables["SERVER_NAME"] | 出現在自引用 UAL 中的伺服器主機名、DNS 化名或 IP 地址 |
| Request.ServerVariables["SERVER_PORT"] | 發送請求的 port |
| Request.ServerVariables["SERVER_PORT_SECURE"] | 如果安全端口處理了請求,則為 1,否則為 0。 |
| Request.ServerVariables["SERVER_PROTOCOL"] | 請求信息協議的名稱和修訂 |
| Request.ServerVariables["SERVER_SOFTWARE"] | 應答請求並運行網關的伺服器軟件的名稱和版本 |
| Request.ServerVariables["URL"] | 提供 URL 的基本部分 |
引用:http://asp.jz123.cn/innerobject/request/intr5vsj.htm
2012年9月5日 星期三
Flash覆蓋到下拉式選單或其它元件
常遇到的問題..目前用此方法都可順利解決 備份自用..
摘自 PTT Web_Design版
作者 terrylchen (某T) 看板 Web_Design
標題 Re: [問題] 選單被flash擋住
時間 Wed Nov 4 11:29:23 2009
───────────────────────────────────────
※ 引述《zazai (猛爆小吃團成員10)》之銘言:
前文恕刪
這個問題其實我平常也滿常被問到的,所以回一篇好了。
如果你嵌入flash的方法是用SWFObject之類的方法,
那請手動將參數加上去就好,以SWFObject為例,
就是加上
so.addParam("wmode", "opaque");
但是如果是用DW內建的AC_RunActiveContent.js的話,
那請不要手動加,因為很容易漏掉,
請直接在DW的面板裡面加,程式會自動把所有該加的地方都加上。
1. 點一下要加參數的flash
2. 按下下方屬性面板的「參數」
3. 再跳出的面板左邊加上wmode,右邊加上opaque,然後按確定
這時你如果回去看原始碼,會發現加了三個地方,
第一個是AC_RunActiveContent,
第二個是object裡面的param,
第三個就是embed裡面,
通常手動加最容易漏掉的就是embed裡的這一個,因此導致FF出現錯誤。
不過第二和第三是包在noscript,表示js不能運作下給瀏覽器看的,
所以應該不太可能會發生你說的IE可以FF不能的情況...
還是說你的flash沒有用js嵌入而是直接用object?
另外再順便提一下,常常有人回答加上transparent,其實是不一樣的。
transparent是因為把flash變成透明背景,
而由於剛好下拉選單的位置沒有東西擋到,
所以造成下拉選單蓋在flash上錯覺,
這時候如果你在flash裡面隨便扔個色塊就會把選單擋起來了,
所以正確的值是用opaque而非transparent。
雖然看起來似乎是一樣,但是意義上是不同的。
訂閱:
文章 (Atom)