インストールレスプログラミング( ´ー`)

VBA , JavaScript , HTAなど 365アプリはインストール必要ですが、仕事に無いケースはほぼないから(・_・;)

疑似掲示板 その2

TextStreamのCloseをきちんとすると,動きがとてもよくなったので,実際の使用に向けてさらに調整を加えてみました。

各授業で簡単に使えるように,データファイルに当たるbbs.txtを掲示板ファイルの名前を利用してつけるように変更。

同じフォルダにHTAファイルとtxtファイルがあるとごちゃごちゃなるので,bbsフォルダを作成してそこにtxtを保存するように変更。

見た目が悪かったので,CSSで若干調整。

(追記)更新ボタンも付け加えました。

この辺の手を加えてみました。試してみないと本当のとこわかりませんが,うまくいきそうな感じ。

ショートカットをうまく利用して生徒が簡単にアクセスできるようにもう一工夫があるといいのかな

さらにショートカットを固定できるように,仕組みを自分の中でルールづけられれば,面白いのかもしれない。

とりあえず,昨日のものよりは改善していると思うので,コードを載せます。

HTAのお約束で,メモ帳とかに貼って,文字コードを忘れずにUTF-8にして,拡張子htaで保存します。それだけでたぶん使えます。

HTAは手軽でいい。次のVersionのWindowsでも生き残らせてくれないかなぁ ( ´Д`)=3

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>メッセージ</title>
<!-- CSS -->
	<style type="text/css">
		.title{background-color: orange;font-size: 20px;display: block;width: 100%;}
		dt{display:block;width: 80px; float: left;padding-left: 2px;padding-top: 2px; background-color:lime;}
		dd{display:block;width: 410px;margin-left: 85px;padding-left: 5px;padding-top: 2px; background-color: greenyellow;}
		.user{display: none;}
		.form{background-color: beige;display: block;width: 100%-4px;padding: 4px;}
	</style>
<!--JScript-->	
<script>
	resizeTo(560,600);
	// FileSystemObject 用定数
	var ForReading = 1;
	var ForWriting = 8;
	/** BBS のデータファイルのフルパス */
	var thisName=location.pathname
	thisName=thisName.slice(thisName.lastIndexOf("\\")+1,thisName.lastIndexOf("."));
	var BbsFile = ".\\bbs\\"+thisName+"bbs.txt";
	var User=new ActiveXObject("WScript.Network").UserName;
	/** ファイルの読み込み */
	function loadText() {
		var fso = new ActiveXObject("Scripting.FileSystemObject");
		var bbs = fso.OpenTextFile(BbsFile, ForReading);
		var tmp=bbs.ReadAll();
		bbs.Close();
		return(tmp);
	}
	/** 投稿内容のロード */
	function load() {
		var fso = new ActiveXObject("Scripting.FileSystemObject");
		if (fso.FolderExists(".\\bbs")==false) fso.CreateFolder(".\\bbs");
		if (fso.FileExists(BbsFile)==false){
			var bbs = fso.OpenTextFile(BbsFile, ForWriting,true);
			bbs.WriteLine("<dt style='background-color:limegreen;'>名前</dt><dd style='background-color:limegreen;'>メッセージ</dd><span class='user'>ユーザー名</span>\r");
			bbs.Close();
		} 
		document.getElementById("data").innerHTML=loadText();
	}
	/** 投稿 */
	function post() {
		var name=document.getElementById("name").value;
		var msg=document.getElementById("msg").value;
		var postData = "<dt>" + name + "</dt>" + "<dd>" + msg + "</dd>" +"<span class='user'>" + User +"</span>\r";
		var fso = new ActiveXObject("Scripting.FileSystemObject");
		var bbs = fso.OpenTextFile(BbsFile, ForWriting);
		bbs.WriteLine(postData);
		bbs.Close();
		load();
		document.getElementById("name").value="";
		document.getElementById("msg").value="";
	}
</script>
</head>

<body onLoad="load();">
	
	<div class="title">一言メッセージ</div>
	<span class="form">
		名前 <input type="text" id="name" size="14" value="" placeholder="Name"><br>
		メッセージ <input type="text" id="msg" size="50" value="" placeholder="Message"><br>
	  <input type="button" id="post" value="送信" onClick="post()">
		<input type="button" id="Reload" value="更新" onClick="load()">
	</span>
	<dl id="data"></dl>
</body>
</html>

動作画面はこんな感じです。

f:id:chemiphys:20190108134542p:plain

試用後に再調整かな。

今度はアンケートに近いものが作れるようにしてみよう。