今更感がありますがYahoo!ウィジェット勉強中。
AIRのほうがインストール楽だし開発も楽だし色んなことできるのですが
知名度がYahoo!ウィジェットのほうがありそうなので習得しときます。
このエントリーでは基本をメモるです。

ウィジェットエンジンをダウンロードしてインストール。
http://widgets.yahoo.co.jp/download/

開発ツール、リファレンスはここ。
http://widgets.yahoo.co.jp/workshop/

ウィンドウを生成

var field=new Window();
field.title="frasio report";
field.width=480;
field.height=480;
field.visible=true;
field.shadow=true;

画像を配置

var im=new Image();
im.src="images/img00.png";
im.hOffset=10;
im.vOffset=10;
field.appendChild(im);

テキストを配置

var t=new Text();
t.hOffset=10;
t.vOffset=10;
t.size=12;
t.color="#000000";
field.appendChild(t);

入力テキストを配置

var texinput=new TextArea();
texinput.width=200;
texinput.height=150;
texinput.bgColor="#ffffff";
texinput.bgOpacity=255;
field.appendChild(texinput);

Flashを配置

var f=new Flash();
f.src="flash/item.swf";
f.hOffset=100;
f.vOffset=50;
field.appendChild(f);
//flash上はウィジェットをドラッグできない

Webを配置

var w=new Web();
w.hOffset=200;
w.vOffset=200;
w.width=280;
w.height=280;
w.url="http://www.yahoo.co.jp/";
field.appendChild(w);
//表示に時間がかかる
//jsが効かなかったり文字化けしたりして実用的ではない

オンライン上のxmlをロードして解析する。

get_xml();

function get_xml(){
	var url=new URL();
	var xmlstr=url.fetch("http://ktyr.net/test/20/test.xml");
	var xml=XMLDOM.parse(xmlstr);
	var myxml=xml.evaluate("metadata");
	var node=myxml.item(0);
	var str=node.evaluate("string(name)");
	log(str);
	//strにnameタグの「frasio report」という文字列が格納されている
}

ローカルのxmlをロードして解析する。

get_local_xml();

function get_local_xml(){
	var xmlstr=filesystem.readFile("test.xml");
	var xml=XMLDOM.parse(xmlstr);
	var myxml=xml.evaluate("metadata");
	var node=myxml.item(0);
	var str=node.evaluate("string(name)");
	log(str);
	//strにnameタグの「frasio report」という文字列が格納されている
}

テキストファイルをユーザ指定場所に保存する。

save_text("保存するテキスト");

function save_text(target_str){
	var destination=saveAs(".txt");//ユーザに保存先を指定させる
	if(destination==null)return;
	if(!filesystem.itemExists(destination)){
		filesystem.writeFile(destination, target_str);
		return true;
	}
	return false;
}

ファイルのドロップを受け付ける

field.onDragDrop=when_file_drop;

function when_file_drop(e){
	var files=e.items;
	var ft=get_filetype(files[0]);

	if(ft!="jpg")return;

	var img=new Image();
	img.src=files[0];
	field.appendChild(img);
}
function get_filetype(filepath){
	return filepath.toString().split(".").pop();
}