「最新版を確認」の版間の差分
ナビゲーションに移動
検索に移動
→ソース: URLの修正 |
ソースコードの修正(URLの指定先がRSSだと403エラーが発生してhtmlソースを取得できないため) |
||
| 1行目: | 1行目: | ||
Meryの最新版の有無を | Meryの最新版の有無を[https://www.haijin-boys.com/ Haijin Boys Online](開発者のブログ)から確認します。 | ||
「イベントで実行」を設定しておけば自動的に確認することが出来ますが、「スクロールした時」など頻繁に実行されるイベントを設定するとサーバーに優しくないので「アクティブな文書が変更された時」などがおすすめです。 | |||
== | == ソースコード == | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
// ----------------------------------------------------------------------------- | // ----------------------------------------------------------------------------- | ||
| 39行目: | 37行目: | ||
catch (objError) | catch (objError) | ||
{ | { | ||
strResult = objError + "\n" | strResult = objError + "\n"; | ||
strResult += "WinHTTP returned error: " + | strResult += "WinHTTP returned error: " + | ||
(objError.number & 0xFFFF).toString() + "\n\n"; | (objError.number & 0xFFFF).toString() + "\n\n"; | ||
| 48行目: | 46行目: | ||
return strResult; | return strResult; | ||
} | } | ||
| 72行目: | 67行目: | ||
return eval([ia,op,ib].join(' ')); | return eval([ia,op,ib].join(' ')); | ||
} | } | ||
function checkUpdate(){ | function checkUpdate(){ | ||
var rss_uri = 'https://www.haijin-boys.com/ | var rss_uri = 'https://www.haijin-boys.com/'; | ||
var res = getText(rss_uri); | var res = getText(rss_uri); | ||
var m = res.replace(/[\n\r]/g,"").match(/<title | var m = res.replace(/[\n\r]/g,"").match(/<a href="(.+?)" title="テキストエディター「Mery」ベータ版 Ver (\d\.\d\.\d) を公開" rel="bookmark">/); | ||
var | var new_uri = m[1]; | ||
var | var new_version = m[2]; | ||
if(version( | if(version(editor.Version, "<", new_version)){ | ||
var mes = "新しいバージョン(" + new_version + ") | var mes = "新しいバージョン(" + new_version + ")が見つかりました。\nWebサイトを開きますか?"; | ||
if(confirm(mes)){ | if(confirm(mes)){ | ||
var Shell = new ActiveXObject("WScript.Shell"); | var Shell = new ActiveXObject("WScript.Shell"); | ||
Shell.Run(new_uri); | Shell.Run(new_uri); | ||
} | } | ||
} else { | |||
window.alert("最新のバージョンがインストールされています。"); | |||
} | } | ||
} | } | ||
| 96行目: | 92行目: | ||
checkUpdate(); | checkUpdate(); | ||
}catch(e){ | }catch(e){ | ||
window.alert("バージョンの確認ができませんでした。"); | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
2023年7月3日 (月) 05:46時点における版
Meryの最新版の有無をHaijin Boys Online(開発者のブログ)から確認します。
「イベントで実行」を設定しておけば自動的に確認することが出来ますが、「スクロールした時」など頻繁に実行されるイベントを設定するとサーバーに優しくないので「アクティブな文書が変更された時」などがおすすめです。
ソースコード
// -----------------------------------------------------------------------------
// 最新版を確認
//
// Copyright (c) 2016 diaphragm
// Released under the MIT license
// https://opensource.org/license/mit/
// -----------------------------------------------------------------------------
// スクリプトを使用したデータの取得 (Windows)
// 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;
}
// ピリオド区切りバージョン番号の比較 | Life is Real.
// 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("最新のバージョンがインストールされています。");
}
}
try{
checkUpdate();
}catch(e){
window.alert("バージョンの確認ができませんでした。");
}
スポンサーリンク