「最新版を確認」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
URLの正規表現を修正、ソースコードの整形
MSY-07 (トーク | 投稿記録)
ダイアログボックスのメッセージを修正
72行目: 72行目:
// 最新のバージョンか確認
// 最新のバージョンか確認
if (version(editor.Version, "<", new_version)) {
if (version(editor.Version, "<", new_version)) {
var mes = "新しいバージョン(" + new_version + ")が見つかりました。\nWebサイトを開きますか?";
var mes = "最新のバージョンが見つかりました。\nWebサイトを開きますか?\n\n現在のVer " + editor.Version + "\n最新のVer " + new_version;
if (confirm(mes)) {
if (confirm(mes)) {
var Shell = new ActiveXObject("WScript.Shell");
var Shell = new ActiveXObject("WScript.Shell");
78行目: 78行目:
}
}
} else {
} else {
window.alert("最新のバージョンがインストールされています。");
window.alert("最新のバージョンがインストールされています。\n\n現在のVer " + editor.Version + "\n最新のVer " + new_version);
}
}
}
}
86行目: 86行目:
checkUpdate();
checkUpdate();
} catch (e) {
} catch (e) {
window.alert("バージョンの確認ができませんでした。");
window.alert("エラーが発生しました。\n" + e.message);
}
}
</syntaxhighlight>
</syntaxhighlight>

2024年9月9日 (月) 06:13時点における版

Meryの最新版の有無をHaijin Boys Online(開発者のブログ)から確認します。

「イベントで実行」を設定しておけば自動的に確認することが出来ますが、「スクロールした時」など頻繁に実行されるイベントを設定するとサーバーに優しくないので、「アクティブな文書が変更された時」などがおすすめです。

ソースコード

#title = "最新版を確認"
#tooltip = "Meryの最新版があるか確認します。"

/*
Copyright (c) 2016 diaphragm. All rights reserved.
Licensed under the MIT License.
*/

// スクリプトを使用したデータの取得
// https://learn.microsoft.com/ja-jp/windows/win32/winhttp/retrieving-data-using-script
function getText(strURL) {
	var strResult;
	try {
		// Create the WinHTTPRequest ActiveX Object.
		var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");

		// Create an HTTP request.
		var temp = WinHttpReq.Open("GET", strURL, false);

		// Send the HTTP request.
		WinHttpReq.Send();

		// Retrieve the response text.
		strResult = WinHttpReq.ResponseText;
	} catch (objError) {
		strResult = objError + "\n";
		strResult += "WinHTTP returned error: " + (objError.number & 0xFFFF).toString() + "\n\n";
		strResult += objError.description;
	}

	// Return the response text.
	return strResult;
}

// ピリオド区切りバージョン番号の比較
// https://ptsv.jp/2015/09/01/ピリオド区切りバージョン番号の比較/
function version(a, op, b) {
	a = a.split('.');
	b = b.split('.');

	var ia, ib;
	var limit = Math.max(a.length, b.length);
	while (limit--) {
		ia = parseInt(a.shift() || 0);
		ib = parseInt(b.shift() || 0);

		if (ia != ib) {
			break;
		}
	}

	return eval([ia, op, ib].join(' '));
}

// アップデートのチェック
function checkUpdate() {
	var rss_uri = "https://www.haijin-boys.com/";
	var res = getText(rss_uri);

	// マッチングの修正
	var m = res.replace(/[\n\r]/g, "").match(/<a href="(https:\/\/www.haijin-boys.com\/software\/mery\/mery-\d-\d-\d)" title="テキストエディター「Mery」ベータ版 Ver (\d.\d.\d) を公開" rel="bookmark">/);

	var new_uri = m[1];
	var new_version = m[2];

	// 最新のバージョンか確認
	if (version(editor.Version, "<", new_version)) {
		var mes = "最新のバージョンが見つかりました。\nWebサイトを開きますか?\n\n現在のVer " + editor.Version + "\n最新のVer " + new_version;
		if (confirm(mes)) {
			var Shell = new ActiveXObject("WScript.Shell");
			Shell.Run(new_uri);
		}
	} else {
		window.alert("最新のバージョンがインストールされています。\n\n現在のVer " + editor.Version + "\n最新のVer " + new_version);
	}
}

// checkUpdate関数の実行
try {
	checkUpdate();
} catch (e) {
	window.alert("エラーが発生しました。\n" + e.message);
}
スポンサーリンク