BloggerAds

2008年10月28日 星期二

WRT - Nokia 推出Widget機制的平台...

開發工具:

  • S60 3rd Edition SDK for Symbian OS, Feature Pack 2 v1.1
  • Safari + run-nightly-webkit


P.S. 本來是使用Firefox~不過其跨網域的Ajax不是很敢領教!使用了greasemonkey+BypassSecurity竟然若要Ajax續使用固定的腳本~故...還是先擺一邊...

 

開發專案以威寶的ODP為藍圖...

P.S.威寶的ODP為手機上的JAVA APP ...此APP可以瀏覽公司的遊戲進而讓使用者下載!


第一次開發,自己先安排一般網頁的HTML樣板..

但遇到了第一個問題,就是需使用游標一點一點的移動。。。。直到想要點的目標物件...故又暫時擺一邊....開始查詢有沒有更好的UI,直到WRTKit...


拿出了WRTKit的TravelCompanion跟RSSReader範例研讀


發現有些事情在Safari可以做...但是WRT不一定可以實現~


如...

NodeList物件的TextContent會回傳"未定義"

DOM物件的xmlDoc = parser.parseFromString(itxt + txt,"text/xml");會當機(S60 Emulator)...N95會不理你!


故針對一些功能...找尋可以共用的Code..如下:

 

Ajax部分:(WRT只會有異步傳輸跟GET傳送)

// retrieves data from server via ajax
//    SampleCode:
//    ajaxFetch(GETURL, GETARGS, processAnswerFun, true, false);// send the line to server
function ajaxFetch(url, param, callback, isXML, isPost) {
    var req = new XMLHttpRequest();
    req.onreadystatechange = function() {
        if (req.readyState == 4 && req.status == 200) {
            uiManager.hideNotification();
              uiManager.showNotification(500, "info", "Complete...");
            if(!isXML){
                callback(req.responseText);
            }else if(isXML){
                callback(req.responseXML);
            }else{
                callback(req.responseText);
            }
        } else if (req.readyState == 4 && req.status != 200) {
            // fetched the wrong page or network error...
            var err = "Error: "+req.status;
            uiManager.showNotification(3000, "warning", err);
            callback(err);
        }else if((req.readyState == 2 || req.readyState == 3) && req.status == 200){
            uiManager.showNotification(-1, "wait", "loading...",-1);
        }else{
            uiManager.showNotification(-1, "wait", "loading...",-1);
        }
    }

    if (!isPost) {
        req.open("GET", url+"?"+(param), true);
        req.send(null);
    } else {
        // POST, doesn't work in the emulator!
        req.open("POST", url, true);
        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        req.send("data="+encodeURIComponent(param));
    }
}


DOM取某節點的值:暫無從String轉換成DOM物件的公版Code (Xml檔案請參考CateId79.xml)

//ResultData 為Dom物件(內容為CateId79.xml)

for(var i=0;i<ResultData.getElementsByTagName("Game_Name").length;i++){    // 取<Game_Name>的數量(length)

    var Game_Name = ResultData.getElementsByTagName("Game_Name").item(i).firstChild.data; // 將第i個的第一個資料(.firstChild.data)取出

}


WRT UI的部份就參考WRTKit裡的documentation.html


以上暫時醬~爾後有時間或發現新的狀況再補充....