06/12/23 15:50:48
起動時にウインドウの位置と大きさを指定したいのですが、
マウスボタンを下げた状態でresizeToした場合にエラーが出るので
念のためマウス状態を取得して場合分けしてみたところ、fireEventで
イベントを呼び出したためかevent.buttonがうまく機能してくれません。
onloadイベントを使うと画面表示後にリサイズして見栄えが悪いので
出来ればfireEventを使いたいのですが、
この場合たまに起こる程度のエラーは諦めるしかないのでしょうね。
<html><head><script language="javascript">
document.all.tags("html")(0).onclick = function (){
if (1 & event.button) return true;
resizeTo(300, 300);
moveTo(event.screenX -150, event.screenY -150);
document.all.tags("html")(0).onclick = null;
return false;
}
while (document.all.tags("html")(0).fireEvent("onclick"));
</script><hta:application></head></html>
357:デフォルトの名無しさん
06/12/23 16:03:05
エラー拾ってリトライするか、
エラー無視してonloadで念のためもう一度やる、とかは?
358:sage
06/12/23 17:57:10
>>356
例外処理という方法があったのですね。
アドバイスありがとうございます、
おかげで期待通りの動作になりました。
359:デフォルトの名無しさん
06/12/26 14:37:26
>>355 ライセンス:LGPL ねぇ…
Yahoo UI Libraryが出てるから魅力感じないス。
phpspotでも紹介してたスね。こっちのほうが速いけど。
// 何気にこのスレって面白い情報集まるのね >>39 >>85 とか早い時期から注目してるし。
360:デフォルトの名無しさん
06/12/27 11:07:58
HTMLと同じように使えるので気に入ってます。
ただ,HTAではcookieは使えないようですね?
以前のデータをcookieのように保存するよい方法
がHTAにあれば,教えてください。
361:デフォルトの名無しさん
06/12/27 11:28:30
バイナリに保存しちゃえばええんちゃう?
function readBinary(file){
var adTypeBinary = 1;
var stream = new ActiveXObject("ADODB.Stream");
stream.type = adTypeBinary;
stream.open();
stream.loadFromFile(file);
stream.position = 0;
var bin = stream.read();
stream.close();
var tmpElm = new ActiveXObject("Microsoft.XMLDOM").createElement("tmp");
tmpElm.dataType = "bin.hex";
tmpElm.nodeTypedValue = bin;
return tmpElm.text;
}
function writeBinary(file,hexBinStr){
var adTypeBinary = 1;
var adSaveCreateNotExist = 1;
var adSaveCreateOverWrite = 2;
var tmpElm = new ActiveXObject("Microsoft.XMLDOM").createElement("tmp");
tmpElm.dataType = "bin.hex";
tmpElm.text = hexBinStr;
var bin = tmpElm.nodeTypedValue;
var Stream = new ActiveXObject("Adodb.Stream");
Stream.Type = adTypeBinary;
Stream.Open();
Stream.Write(bin);
Stream.Savetofile(file, adSaveCreateOverWrite);
}
362:デフォルトの名無しさん
06/12/27 14:49:50
>361
詳しいコードまで作成していただき,感謝です。これを改良して使わさせて
いただきます。
ところで,自分で教えていただいた
new ActiveXObject("ADODB.Stream");
をネットで検索すると,Ajaxの解説ページ,JavaScript Libraryのページ
などにありました。HTAに関連する他のnew ActiveXObject("...")の基本
的な機能を勉強するに,おすすめのサイトはございますか?
363:デフォルトの名無しさん
06/12/27 16:24:47
>>362
ActiveXObjectはHTA用とか関係ないから。とりあえずMSDNにはMSが作ってる
ADODB.Stream、Microsoft.XMLHTTP、MSXML2.DOMDocumentや
WSH付属のWScript.XXXXX、Scripting.FileSystemObject、Scripting.Dictionaryなどの
解説があるし、MS製以外なら制作者のHPや付属ドキュメントみれば良い。
364:デフォルトの名無しさん
06/12/27 19:25:05
>>360
cookie使えたような気がしたけど、俺の記憶違いかな
HTAらしさを醸し出すならやっぱし
behavior:url(#default#userData)
365:デフォルトの名無しさん
06/12/29 21:08:44
HTAならテキストファイルの読み書きが出来るからiniでもxmlでも好きなようにするがよろしい。