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

提供: MeryWiki
ナビゲーションに移動 検索に移動
変数宣言(var)忘れてたので追記
MSY-07 (トーク | 投稿記録)
URLのマッチング条件を修正、変数の宣言を分割
 
(同じ利用者による、間の16版が非表示)
1行目: 1行目:
Meryの最新版の有無を( http://haijin-boys.com/rss.xml )から確認します。
Meryの最新版の有無を[https://www.haijin-boys.com/ Haijin Boys Online](開発者のブログ)から確認します。


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


==ソース==
== ソースコード ==
<syntaxhighlight lang="javascript" copy>
#title = "最新版を確認"
#tooltip = "Meryの最新版があるか確認します。"


<source lang="javascript">
/*
// -----------------------------------------------------------------------------
Copyright (c) 2016 diaphragm. All rights reserved.
// 最新版を確認
Licensed under the MIT License.
//
*/
// Copyright (c) 2016 diaphragm
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
// -----------------------------------------------------------------------------


// スクリプトを使用したデータの取得
// 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");


// Retrieving Data Using Script (Windows)
// Create an HTTP request.
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa384071(v=vs.85).aspx
WinHttpReq.Open("GET", strURL, false);
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.
// Send the HTTP request.
        WinHttpReq.Send();
WinHttpReq.Send();
       
 
        // Retrieve the response text.
// Retrieve the response text.
        strResult = WinHttpReq.ResponseText;
strResult = WinHttpReq.ResponseText;
    }
} catch (objError) {
    catch (objError)
strResult = objError.message + "\n";
    {
strResult += "WinHTTP returned error: " + (objError.number & 0xFFFF).toString(16) + "\n\n";
        strResult = objError + "\n"
strResult += objError.description;
        strResult += "WinHTTP returned error: " +  
}
            (objError.number & 0xFFFF).toString() + "\n\n";
 
        strResult += objError.description;
// Return the response text.
    }
return strResult;
   
    // Return the response text.
    return strResult;
}
}


//window.alert(getText("http://www.microsoft.com/default.htm"));
// ピリオド区切りバージョン番号の比較
// https://ptsv.jp/2015/09/01/ピリオド区切りバージョン番号の比較/
function version(a, op, b) {
a = a.split('.');
b = b.split('.');


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


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


// ピリオド区切りバージョン番号の比較 | Life is Real.
return eval([ia || 0, op, ib || 0].join(' '));
// https://ptsv.org/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{1,2})" title="テキストエディター「Mery」ベータ版 v(\d\.\d\.\d{1,2}) を公開" rel="bookmark">/);
if (!m) {
window.alert("バージョンの確認ができませんでした。");
return;
}


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


function checkUpdate(){
// 最新のバージョンか確認
  var rss_uri = 'http://haijin-boys.com/rss.xml';
if (version(editor.Version, "<", new_version)) {
  var res = getText(rss_uri);
var mes = "最新のバージョンが見つかりました。\nWebサイトを開きますか?\n\n現在のVer " + editor.Version + "\n最新のVer " + new_version;
 
if (confirm(mes)) {
  var m = res.replace(/[\n\r]/g,"").match(/<title>Mery\s*(\d+\.\d+\.\d+)<\/title>.*?<link>(.+?)<\/link>/);
var Shell = new ActiveXObject("WScript.Shell");
  var new_version = m[1];
Shell.Run(new_uri);
  var new_uri = m[2];
}
 
} else {
  if(version(Editor.Version, "<", new_version)){
window.alert("最新のバージョンがインストールされています。\n\n現在のVer " + editor.Version + "\n最新のVer " + new_version);
    var mes = "新しいバージョン(" + new_version + ")があるようです。\nWebサイトを開きますか?";
}
    if(confirm(mes)){
      var Shell = new ActiveXObject("WScript.Shell");
      Shell.Run(new_uri);
    }
  }
}
}


 
// checkUpdate関数の実行
try{
try {
  checkUpdate();
checkUpdate();
}catch(e){
} catch (e) {
  // nothing to do
window.alert(e.message);
}
}
</source>
</syntaxhighlight>

2026年4月19日 (日) 02:02時点における最新版

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.
		WinHttpReq.Open("GET", strURL, false);

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

		// Retrieve the response text.
		strResult = WinHttpReq.ResponseText;
	} catch (objError) {
		strResult = objError.message + "\n";
		strResult += "WinHTTP returned error: " + (objError.number & 0xFFFF).toString(16) + "\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 = 0;
	var ib = 0;
	var limit = Math.max(a.length, b.length);
	while (limit--) {
		ia = parseInt(a.shift() || 0, 10);
		ib = parseInt(b.shift() || 0, 10);

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

	return eval([ia || 0, op, ib || 0].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{1,2})" title="テキストエディター「Mery」ベータ版 v(\d\.\d\.\d{1,2}) を公開" rel="bookmark">/);
	if (!m) {
		window.alert("バージョンの確認ができませんでした。");
		return;
	}

	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(e.message);
}
スポンサーリンク