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

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
ソースコードの修正(URLの指定先がRSSだと403エラーが発生してhtmlソースを取得できないため)
MSY-07 (トーク | 投稿記録)
→ソースコード: ソースコードの整形、コメントの追加
14行目: 14行目:




// スクリプトを使用したデータの取得 (Windows)
// スクリプトを使用したデータの取得
// https://learn.microsoft.com/ja-jp/windows/win32/winhttp/retrieving-data-using-script
// https://learn.microsoft.com/ja-jp/windows/win32/winhttp/retrieving-data-using-script
function getText(strURL)
function getText(strURL) {
{
var strResult;
    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.
try {
        WinHttpReq.Send();
// Create the WinHTTPRequest ActiveX Object.
       
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
        // Retrieve the response text.
 
        strResult = WinHttpReq.ResponseText;
// Create an HTTP request.
    }
var temp = WinHttpReq.Open("GET", strURL, false);
    catch (objError)
 
    {
// Send the HTTP request.
        strResult = objError + "\n";
WinHttpReq.Send();
        strResult += "WinHTTP returned error: " +  
 
            (objError.number & 0xFFFF).toString() + "\n\n";
// Retrieve the response text.
        strResult += objError.description;
strResult = WinHttpReq.ResponseText;
    }
} catch (objError) {
   
strResult = objError + "\n";
    // Return the response text.
strResult += "WinHTTP returned error: " + (objError.number & 0xFFFF).toString() + "\n\n";
    return strResult;
strResult += objError.description;
}
 
// Return the response text.
return strResult;
}
}




// ピリオド区切りバージョン番号の比較 | Life is Real.
// ピリオド区切りバージョン番号の比較
// https://ptsv.jp/2015/09/01/ピリオド区切りバージョン番号の比較/
// https://ptsv.jp/2015/09/01/ピリオド区切りバージョン番号の比較/
function version(a,op,b)
function version(a, op, b) {
{
a = a.split('.');
  a = a.split('.');
b = b.split('.');
  b = b.split('.');
 
var ia, ib;
  var ia,ib;
var limit = Math.max(a.length, b.length);
  var limit = Math.max(a.length,b.length);
while (limit--) {
  while(limit--)
ia = parseInt(a.shift() || 0);
    {
ib = parseInt(b.shift() || 0);
      ia = parseInt(a.shift() || 0);
 
      ib = parseInt(b.shift() || 0);
if (ia != ib)
break;
      if(ia != ib)
}
        break;
return eval([ia, op, ib].join(' '));
    }
  return eval([ia,op,ib].join(' '));
}
}




function checkUpdate(){
// アップデートのチェック
  var rss_uri = 'https://www.haijin-boys.com/';
function checkUpdate() {
  var res = getText(rss_uri);
var rss_uri = 'https://www.haijin-boys.com/';
 
var res = getText(rss_uri);
  var m = res.replace(/[\n\r]/g,"").match(/<a href="(.+?)" title="テキストエディター「Mery」ベータ版 Ver (\d\.\d\.\d) を公開" rel="bookmark">/);
 
  var new_uri = m[1];
var m = res.replace(/[\n\r]/g, "").match(/<a href="(.+?)" title="テキストエディター「Mery」ベータ版 Ver (\d\.\d\.\d) を公開" rel="bookmark">/);
  var new_version = m[2];
var new_uri = m[1];
 
var new_version = m[2];
  if(version(editor.Version, "<", new_version)){
 
    var mes = "新しいバージョン(" + new_version + ")が見つかりました。\nWebサイトを開きますか?";
if (version(editor.Version, "<", new_version)) {
    if(confirm(mes)){
var mes = "新しいバージョン(" + new_version + ")が見つかりました。\nWebサイトを開きますか?";
      var Shell = new ActiveXObject("WScript.Shell");
if (confirm(mes)) {
      Shell.Run(new_uri);
var Shell = new ActiveXObject("WScript.Shell");
    }
Shell.Run(new_uri);
  } else {
}
    window.alert("最新のバージョンがインストールされています。");
} else {
  }
window.alert("最新のバージョンがインストールされています。");
}
}
}




try{
// checkUpdate関数の実行
  checkUpdate();
try {
}catch(e){
checkUpdate();
  window.alert("バージョンの確認ができませんでした。");
} catch (e) {
window.alert("バージョンの確認ができませんでした。");
}
}
</syntaxhighlight>
</syntaxhighlight>

2023年7月3日 (月) 07:58時点における版

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

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

ソースコード

// -----------------------------------------------------------------------------
// 最新版を確認
//
// Copyright (c) 2016 diaphragm
// Released under the MIT license
// https://opensource.org/license/mit/
// -----------------------------------------------------------------------------


// スクリプトを使用したデータの取得
// 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="(.+?)" 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 = "新しいバージョン(" + new_version + ")が見つかりました。\nWebサイトを開きますか?";
		if (confirm(mes)) {
			var Shell = new ActiveXObject("WScript.Shell");
			Shell.Run(new_uri);
		}
	} else {
		window.alert("最新のバージョンがインストールされています。");
	}
}


// checkUpdate関数の実行
try {
	checkUpdate();
} catch (e) {
	window.alert("バージョンの確認ができませんでした。");
}
スポンサーリンク