PIXNET Logo登入

Jemmy Walker

跳到主文

部落格全站分類:

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 5月 06 週四 201017:46
  • Window Dialog

  有句電影台詞是女生對風流倜儻的男主角說:晚上很喜歡睡的旁邊是你,但又怕早上醒來時旁邊還是你。說著是男主角是浪漫卻不能依賴。程式語言有Strong Type和Weak Type之分,Strong Type語言顯然像赤木剛憲般的顧家好男人,Weak Type語言則如同剛說的風流倜儻男主角。Java Script是個古老的Weak Type語言,有相當多的Syntax Sugar,但也常難以捉摸,令人氣結。   需求上是Popup一個視窗,輸入完後按鈕或[X]返回父視窗,而父視窗在Popup視窗未close之前不得被點選。所以找到了window.showModalDialog這個method,卻屢屢無效,最後才知道原來是Google Chrome不支援,支援的有IE和FireFox及Safari,而Chrome和Opera是不支援的。OK!那如何從Popup視窗傳值回父視窗呢?單值還好,多個值…還不如由父視窗提供一個callback的Java Script function給Popup視窗在window.close()前呼叫,只是很狐疑的是,為何以下兩個敍述是等價的: window.opener.callback window.dialogArguments.callback   而按網路的建議寫法,應該是這樣:

if (window.dialogArguments != null) {
    window.dialogArguments.callback(data);
}
window.opener = null;
window.close();

  估計是預防父視窗當掉,連在Popup視窗也受影響吧!特別像Chrome可以不小心手動close父視窗。
(繼續閱讀...)
文章標籤

Jemmy 發表在 痞客邦 留言(0) 人氣(861)

  • 個人分類:Java Script
▲top
  • 12月 25 週五 200922:19
  • CSS初體驗

E {     CSS Rule } Selector examples: <td>、<a>…。E是Tag。 #uniqueID {     CSS Rule } Selector examples: <div id="uniqueID"> E.className {     CSS Rule } Selector examples: <p class="className">。若是.className,則是不管任何Tag,符合className的class均受影響。 E1, E2, E3 {     CSS Rule } Select examples: p, #unique_id, div.class_name。以逗號分隔元素,符合其中一個均受影響。元素不限於Tag,可以是#ID、class name等。#後接的是ID,小數點後接的是class style name。 E F {     CSS Rule } Selector examples: #links a。 E元素後接的F元素均受影響。 * {     CSS Rule } 所有元素均受影響。     寫了那麼久的網頁,總算因專案要survey jQuery,在大陸簡體書"鋒利的jQuery"才意外看到CSS一般的用法。
(繼續閱讀...)
文章標籤

Jemmy 發表在 痞客邦 留言(0) 人氣(19)

  • 個人分類:Java Script
▲top
  • 7月 28 週二 200917:09
  • Web出現Java Script錯,記得Refresh(F5)

  今天在IE測試Web,在Testing沒事,在Production就出現Java Script錯誤。有時是Cache到以前的HTML所導致的,記得對頁面按F5去Refresh,也許就成了。
(繼續閱讀...)
文章標籤

Jemmy 發表在 痞客邦 留言(0) 人氣(21)

  • 個人分類:Java Script
▲top
  • 9月 30 週二 200814:48
  • 全形半形轉換-查表法

半轉全
function unAsc(text) { 
 
  var asciiTable = "!\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
  var big5Table = "%uFF01%u201D%uFF03%uFF04%uFF05%uFF06%u2019%uFF08%uFF09%uFF0A%uFF0B%uFF0C%uFF0D%uFF0E%uFF0F%uFF10%uFF11%uFF12%uFF13%uFF14%uFF15%uFF16%uFF17%uFF18%uFF19%uFF1A%uFF1B%uFF1C%uFF1D%uFF1E%uFF1F%uFF20%uFF21%uFF22%uFF23%uFF24%uFF25%uFF26%uFF27%uFF28%uFF29%uFF2A%uFF2B%uFF2C%uFF2D%uFF2E%uFF2F%uFF30%uFF31%uFF32%uFF33%uFF34%uFF35%uFF36%uFF37%uFF38%uFF39%uFF3A%uFF3B%uFF3C%uFF3D%uFF3E%uFF3F%u2018%uFF41%uFF42%uFF43%uFF44%uFF45%uFF46%uFF47%uFF48%uFF49%uFF4A%uFF4B%uFF4C%uFF4D%uFF4E%uFF4F%uFF50%uFF51%uFF52%uFF53%uFF54%uFF55%uFF56%uFF57%uFF58%uFF59%uFF5A%uFF5B%uFF5C%uFF5D%uFF5E";
   
  var result = "";
  for ( var i = 0 ; i < text.length ; i ++ ) {
    var val = text.charAt(i) ;           
    var j = asciiTable.indexOf(val) * 6 ;       
    result += ( j > -1 ? unescape(big5Table.substring( j , j + 6 ) ) : val );   
  }
     
  return result;
}

全轉半
function asc(text)
{
var asciiTable = "!\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
var big5Table = "%uFF01%u201D%uFF03%uFF04%uFF05%uFF06%u2019%uFF08%uFF09%uFF0A%uFF0B%uFF0C%uFF0D%uFF0E%uFF0F%uFF10%uFF11%uFF12%uFF13%uFF14%uFF15%uFF16%uFF17%uFF18%uFF19%uFF1A%uFF1B%uFF1C%uFF1D%uFF1E%uFF1F%uFF20%uFF21%uFF22%uFF23%uFF24%uFF25%uFF26%uFF27%uFF28%uFF29%uFF2A%uFF2B%uFF2C%uFF2D%uFF2E%uFF2F%uFF30%uFF31%uFF32%uFF33%uFF34%uFF35%uFF36%uFF37%uFF38%uFF39%uFF3A%uFF3B%uFF3C%uFF3D%uFF3E%uFF3F%u2018%uFF41%uFF42%uFF43%uFF44%uFF45%uFF46%uFF47%uFF48%uFF49%uFF4A%uFF4B%uFF4C%uFF4D%uFF4E%uFF4F%uFF50%uFF51%uFF52%uFF53%uFF54%uFF55%uFF56%uFF57%uFF58%uFF59%uFF5A%uFF5B%uFF5C%uFF5D%uFF5E";
 
var result = "";
for (var i = 0; i < text.length; i++) {
var val = escape(text.charAt(i));
var j = big5Table.indexOf(val);
result += (((j > -1) && (val.length == 6)) ? asciiTable.charAt(j / 6) : text.charAt(i));
}
return result;
}
(繼續閱讀...)
文章標籤

Jemmy 發表在 痞客邦 留言(0) 人氣(653)

  • 個人分類:Java Script
▲top
  • 6月 27 週五 200809:00
  • YUI的autocomplete不能顯示中文之解法.

不熟YUI,但身為國際化的Ajax Library,應該都是以UTF-8作為傳輸用的編碼。
從JSP post到另一個JSP或是Servlet,在request.getParameter取得參數需做以下的轉換。
keyword = new String(request.getParameter("p_keyword").getBytes("ISO-8859-1"), "UTF-8");
而JSP檔是否以UTF-8格式儲存(charset也設為UTF-8)倒不一定。因為Big5或MS950也能編碼成功。
(繼續閱讀...)
文章標籤

Jemmy 發表在 痞客邦 留言(0) 人氣(77)

  • 個人分類:Java Script
▲top
  • 1月 10 週四 200820:31
  • Fubon維護二三事

難得走Fubon做一下維護工作,很奇怪心情完全不一樣,放鬆了不再緊繃。也巧遇前公司故人兩個零來Fubon做需求訪談。
上午尋找批次出錯問題,是在使用java.sql.Savepoint時出錯,這是JDBC 3.0才有的功能,Oracle的ojdbc14才支援;接著尋找該批次之的設定,classpath確實指向ojdbc14.jar,14之意是指支援JDK 1.4以上的版本(前一版classes12.zip當然指支援JDK 1.2以上);所以在command mode下了java -version,罪魁禍首是jdk1.3.1,雖然該主機有安裝JDK 1.5,顯然Path沒有指向它,原因是Oracle 9i後來才安裝,oracle也有自己的jdk,9i的JDK版本正是1.3.1,在安裝Oracle 9i後,自動把JDK的bin目錄加到Path的最前頭。問題迎刃而解。
下午也是一個Java Script的基本問題,很簡單卻也搞了一下午,先是沒有source code,只能直接改JSP,出錯了也不知錯哪裡,編譯程式這時優點好過直譯程式,而後來使用window.open去開一個新url,但前面老是被冠上web context的URL,原因是www.money-link.com.tw前面沒有加
http://
(繼續閱讀...)
文章標籤

Jemmy 發表在 痞客邦 留言(0) 人氣(24)

  • 個人分類:Java Script
▲top
  • 7月 15 週日 200712:16
  • Ajaxis














Ajaxis (Ajax + axis)


這兩天剛好踹到AJAX與Axis(Java的Web Services套件), 就把整合一個sample套餐如下:

下載材料:prototype.js, Axis套件(axis-bin-1_4.zip)

下載廚具:Java Web Server(如Tomcat, OC4J...)本人用OC4J 10.1.13

料理砧板:NotePad就行(我用高級一點的EditPlus)

1.Axis套件解壓縮,取出webapps目錄下的Axis子目錄(相當於一個WAR),copy到 Web Server放Application目錄下備用(Web Server如何新增一個Web Context自行參考說明)

2.寫個Java Web Service, 叫Hello.jws(副檔名一定要叫jws), 如下

public class Hello {
    public String say(String name, int age) {
        return "Hello! " + name + " " + age;
    }
}

料理完畢後,請將Hellow.jws放在axis目錄下

3.寫個HTML,做測試Ajaxis之用,代碼如下:

<HTML>
 <HEAD>
  <TITLE> Test Ajaxis </TITLE>
 </HEAD>
 <script type="text/javascript" src="./prototype.js"></script>
 <script type="text/javascript" src="./ajaxis.js"></script>
 <BODY>
 Name: <INPUT TYPE="text" NAME="Name" size=10/>
 Age: <INPUT TYPE="text" NAME="Age" size=5/>
 <INPUT TYPE="button" value="詢問" onClick="callAjaxis()"><p>
 <TEXTAREA NAME="msg" ROWS="20" COLS="80"></TEXTAREA>
 </BODY>
</HTML>

紅字必須排在藍字之前.
4.寫個Java Script透過Ajax去call webservices, 名叫ajaxis.js

function callAjaxis() {
 var name = document.getElementById("name").value;
 var age = document.getElementById("age").value;
 var url = "
http://localhost:8888/axis/Hello.jws?method=say&name=" + name + "&age=" + age;
 new Ajax.Request(url, { method: 'get',onComplete: handleAjaxis });
}

function handleAjaxis(httpObj) {
 document.getElementById("msg").value = httpObj.responseText;
}
5.記得html, prototype.js與ajaxis.js要放在同一個目錄,用IE開啟html,輸入Name, Age, 按[詢問], 它會執行ajaxis.js的callAjaxis, 回傳值會經由指定的function(handleAjaxis)取得放在名為msg的textArea, 會有一堆討厭的soap tag, 可以改良使用DOM去取得所需要的資訊.

  













後來把測試用的html(名為TestAjaxis.html)放到Web Server上,透過web server的url來go. 需做以下的設定, Ajax才能work:

 

Edit C:\windows\system32\drivers\etc下的hosts文字檔,應該會有預設的一行

127.0.0.1    localhost

 

Ajax的作用只能在localhost起作用,卻不能在實體IP或127.0.0.1起作用,後來我加了如下一行:

10.1.81.58    my

 

結果http://my:8888/axis/TestAjaxis.html就可以使用Ajax,但實體IP仍是不行,有贀達者知情者請回饋為何IP不行

 

而之所以要編輯hosts,我猜是Browser對涉及像XMLHttpRequest元件等(如IE的ActiveXObject)會存取Client資訊加以安控所致.
(繼續閱讀...)
文章標籤

Jemmy 發表在 痞客邦 留言(3) 人氣(40)

  • 個人分類:Java Script
▲top
  • 7月 04 週三 200711:36
  • include js檔

Example 1:
<script type="text/javascript" src="prototype.js"></script>
被include的js檔內容不能有Tag,如<script/>,<html>之類
Example 2:
<script type="text/javascript" src="prototype.js"></script>


<script type="text/javascript" src="useAjax.js"></script>

若useAjax.js有引用prototype.js的內容,include需有先後順序

Example 3:Use Ajax

var url = "http://localhost:8888/axis/EchoHeader?wsdl";

new Ajax.Request(url, { method: 'get',onComplete: handleAxis});

onComplete所指的handleAxis是函數指標,待Ajax處理完後回給handleAxis

故要在Java Script宣告handleAxis處理傳回的結果:

function handleAxis(httpObj) {                 // httpObje是handleAxis區域變數,由prototype.js所呼叫

    var returnText = httpObj.responseText; // 傳回的結果

    // process ....

}

 
(繼續閱讀...)
文章標籤

Jemmy 發表在 痞客邦 留言(0) 人氣(1,885)

  • 個人分類:Java Script
▲top
  • 5月 28 週一 200715:04
  • 無理數

凡電腦語言,涉及到小數加總,有時筆算明明是對的,但電腦總是比對的數字多出0.00000000...001
因為電腦計算單位是0與1,小數採浮點數格式,所以小數以二進位表示有時會展延成無理數
對此每個程式語言均有提供解法,Java Script的方法是total = Math.round(total * 100) / 100
(繼續閱讀...)
文章標籤

Jemmy 發表在 痞客邦 留言(0) 人氣(24)

  • 個人分類:Java Script
▲top
  • 5月 12 週六 200723:08
  • IFrame

最近在debug程式,因不諳DHTML,深受IFrame之害,故此誌備忘.
IFrame的特性是由forward的JSP轉成html主頁後,傳到前端Browser,再由Browser載入IFrame的內容.
因此html主頁可以接收到forward的JSP內容轉換出來的變數值.
而IFrame卻無法與html主頁收到相同的變數值,因為html主頁是在Browser端載入IFrame的內容,
若IFrame內容也是JSP,在html主頁載入IFrame之時,IFrame會再向Web Server Request傳回轉換後的html.
因此html主頁的JSP的轉換值無法與IFrame的JSP共享.IFrame的用法其實也就Ajax未正名之前替代方案之一.
相形之下Ajax比IFrame單純多了.


另一個情境是在富邦案出現的,該情境未來可能出現其他的案子,而且很合理.
就是一個session user可同時處理不同視窗或頁籤卻相同的AP,但帶不同的客戶ID.
除了把scope從session改成request之外,另一種方式組Key,這樣不會擔心不同視窗搶到同一個session key的值,
怎麼組session key:客戶ID+"_keyname",甚至可以複雜到user id + "_" + custom id + "_" + key_name
(繼續閱讀...)
文章標籤

Jemmy 發表在 痞客邦 留言(0) 人氣(134)

  • 個人分類:Java Script
▲top
12»

自訂側欄

自訂側欄

個人資訊

Jemmy
暱稱:
Jemmy
分類:
好友:
累積中
地區:

熱門文章

  • (1,414)非我族類的DataTables.js:分頁和排序無作用原因
  • (541)Perl的跨行比對
  • (2,911)Java在換行字元的issue
  • (72)Notes的Agent二三事
  • (520)JavaMail初體驗
  • (31)六句聯
  • (1,418)UltraEdit轉大小寫
  • (576)Struts-Menu初體驗
  • (18,352)Windows route初體驗
  • (223)Log4J依不同class產出不同log file之二,加Daily Rolling

文章分類

  • PostgreSQL (1)
  • Ruby (6)
  • 圖書 (18)
  • 旅行 (8)
  • OSGi (13)
  • 健康 (9)
  • Google (6)
  • 歷史 (5)
  • Spring-Security (5)
  • Java Script (11)
  • Log (8)
  • 娛樂 (25)
  • IT趨勢 (12)
  • 心情 (92)
  • 組織 (41)
  • Java基本功 (18)
  • Regex (19)
  • 新聞與政治 (46)
  • 電腦和網際網路 (47)
  • Maven (28)
  • Spring (31)
  • LotusNotes (12)
  • Java (60)
  • Oracle (17)
  • Struts (21)
  • jQuery (10)
  • 未分類文章 (1)

最新文章

  • JDOM解析XML字串(非檔案)
  • Android SDK不能用於JDK 64bit
  • 非我族類的DataTables.js:分頁和排序無作用原因
  • java.lang.IllegalStateException: Committed之解
  • PostgreSQL二三事
  • Form/Field V.S. Document/Item
  • Spring Mail
  • Ant generate manifest.mf的class-path清單
  • dhcp.bat
  • Java update Notes的DateTime欄位

動態訂閱

文章精選

文章搜尋

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣: