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

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
ソース: URLの修正
MSY-07 (トーク | 投稿記録)
ソースコードの修正(URLの指定先がRSSだと403エラーが発生してhtmlソースを取得できないため)
1行目: 1行目:
Meryの最新版の有無を( https://www.haijin-boys.com/rss.xml )から確認します。
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;
}
}
//window.alert(getText("http://www.microsoft.com/default.htm"));




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/rss.xml';
   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>Mery\s*(\d+\.\d+\.\d+)<\/title>.*?<link>(.+?)<\/link>/);
   var m = res.replace(/[\n\r]/g,"").match(/<a href="(.+?)" title="テキストエディター「Mery」ベータ版 Ver (\d\.\d\.\d) を公開" rel="bookmark">/);
   var new_version = m[1];
   var new_uri = m[1];
   var new_uri = m[2];
   var new_version = m[2];
    
    
   if(version(Editor.Version, "<", new_version)){
   if(version(editor.Version, "<", new_version)){
     var mes = "新しいバージョン(" + new_version + ")があるようです。\nWebサイトを開きますか?";
     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){
   // nothing to do
   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("バージョンの確認ができませんでした。");
}
スポンサーリンク