2010年12月20日 星期一

[技術筆記](CSS) word-wrap: 讓英文字自動斷行

常遇到在固定寬度的TABLE中顯示URL,但是URL太長因此超出TABLE預設的寬度,不會自動換行,可以用以下的CSS STYLE解決:
word-wrap: break-word;
word-break: break-all;


說明:
1. word-wrap: 超過寬度時是否要換行
2. word-break: 斷字的方法
 
以上語法適用於div、td、body、p...等

2010年12月15日 星期三

[技術筆記] 在windows server 2008的工作排程中執行IE開啟網頁

源起
在開發網路程式(ASP、ASP.NET...等)時,有些功能必須重複執行,通常會使用排程來設定這樣的工作。
但是如果程式設計師只有網路程式的經驗,不會寫WIN-FORM程式,好像也沒關係,寫成WEB版再設定以IE開啟即可。

以前的解決方案

指令如下:

"C:\Program Files\Internet Explorer\iexplore.exe" "http://url/?par1=value"

注意:因為路徑有空白,因此要加上"",否則會有找不到程式的錯誤

將指令設定到『工作排程』中執行即可完成此項任務。

問題點
但是這樣的解決方案看似容易,確有幾個問題:
1. IE是CLIENT端程式,必須在登入狀況下才能執行
2. IE會自動開啟,但是不會自動結束
3. IE是個大程式,佔用很多資源

2、3還好解決,用『工作排程』可以結束執行中的IE
1可以用自動登入來解決



最佳解決方案
最近SERVER換成Windows Server 2008,重新思考這個問題,希望能有較好的解決方案。
網路找了一下,發現有人用VBS來取代IE,是個不錯的方法,VBS程式碼列表如下:

Call OpenURL()
Sub OpenURL()
'Force the script to finish on an error.
On Error Resume Next


'Declare variables
Dim objRequest
Dim URL
Set objRequest = CreateObject("Microsoft.XMLHTTP")


'Put together the URL link appending the Variables.
URL = "http://url?par1=value"


'Open the HTTP request and pass the URL to the objRequest object
objRequest.open "POST", URL , false


'Send the HTML Request
objRequest.Send


'Set the object to nothing
Set objRequest = Nothing
End Sub


主要原理是建立一個Microsoft.XMLHTTP object來取代IE

執行VBS: cscript xxx.vbs
執行時會開啟一個DOS CMD,執行完自動結束,比開啟IE快10倍

如此一來,一次解決以上三個問題,太帥了

2010年12月6日 星期一

[技術筆記] ASP.NET 內建event執行順序

在ASP.NET程式中,提供許多內建的EVENT,可以用來處理一些功能,如果只有單獨一個PAGE,就比較單純。但是當導入Master Page以及User Control後,通常讓程式設計師無所適從,在此整理相關訊息:

單獨一個PAGE的狀況
1. PreInit
2. Init
3. PreLoad
4. Load
5. Load Complete
6. PreRender
7. PreRender Complete
8. Unload




考慮比較複雜的狀況
Content page、Master page以及User Control(包括Content page controlsMaster page controls)
1.Content page PreInit event.

2.Master page controls Init event.
3.Content page controls Init event.
4.Master page Init event.
5.Content page Init event.

6.Content page Load event.
7.Master page Load event.
8.Master page controls Load event.
9.Content page controls Load event.

10.Content page PreRender event.
11.Master page PreRender event.
12.Master page controls PreRender event.
13.Content page controls PreRender event.

14.Master page controls Unload event.
15.Content page controls Unload event.
16.Master page Unload event.
17.Content page Unload event.


Microsoft提供下圖做為參考(但是不含MasterPage)

2010年10月19日 星期二

[技術通報] KB2360131更新會造成網站顯示不正常

微軟於2010/10/14發佈的IE KB2360131更新,防止了跨SITE的CSS參考(cross site css),如果網頁中有跨SITE的CSS參考,IE將不會套用該CSS,因此會造成顯示不正確(該有的字、圖都會出現,但是排版不正確)




KB2360131更新主要防止在CSS中的URL屬性(例如background-image),會被導入不安全的頁面或是程式,因此加上此防護。請參考以下網址的SAMPLE:

http://ajaxian.com/archives/xsstc-cross-site-scripting-through-css-data



如何修改網頁以避免不正常:

簡單來說就是拿掉跨SITE的CSS參考

1. 將其他SITE的CSS複製一份至本機,然後修改CSS參考URL至本機

2. IIS中設定跨SITE路徑參考至原來的CSS位置,同樣修改CSS參考URL至本機的路徑

方法一較簡單,但是壞處是要維護兩套CSS

方法二較複雜,也可能無法做到,但是好處是不需要維護兩套CSS



以上給大家參考

2010年2月25日 星期四

Visual Studio 連線至遠端WEB網站的方法

預先作業:
  1. 遠端SERVER要安裝FrontPage Server Extensions
    • 控制台-->新增移除程式
    • 新增WINDOWS元件
    • Application Server-->IIS-->FrontPage 2002 Server Extensions
  2. 站台要配置FrontPage Server Extensions
    • 至IIS
    • 點選站台-->右鍵-->所有工作-->配置FrontPage Server Extensions
連線至遠端WEB站台:
  •  執行Visual Studio
  • 選擇開啟網站
  • 選擇遠端站台
  • 輸入網址即可