いまやMozilla Firefoxのためだけのものではなく、ウェブブラウザーを横断する文書を集約することを目指すことになった*1 MDN Web Docs(以下、単にMDN)ですが、ページによっては残念なことに英語版の更新に追随できていない、ということがあります。
必要なときにMDNに限らず文書の日付をチェックするように筆者は心掛けているのですが、MDNの日本語版と英語版をいちいち目視でチェックするのも面倒だなあ…しかし拡張機能を作るほどでもないし…そうかブックマークレットという手があったか、ということで晒してみます。なお、日本語版のMDNを開いてるときに英語版と比較するようになってます。
javascript:(function(){var c=document.querySelector(".contributors-sub time").dateTime,d=Date.parse(c),b=location.pathname.replace("/ja/","/en-US/"),a=new XMLHttpRequest;a.open("GET","https://developer.mozilla.org"+b);a.responseType="document";a.send();a.addEventListener("load",function(a){a=a.target.responseXML.querySelector(".contributors-sub time").dateTime;var b=Date.parse(a);0>d-b?window.alert(c+" :ja\n"+a+" :en\n\u65e5\u672c\u8a9e\u306e\u60c5\u5831\u304c\u53e4\u3044\u3067\u3059\u3002"):window.alert("\u263a")})})();
お好みでwindow.alert()
の中身を書きかえてください。ちなみにClosure Compiler Serviceで圧縮する前のコードはこんな感じ。もしかしたらJSに詳しい人からナンダコレと思われるかもですが(もしおかしなところがあれば、こっそり教えてください)、一応メジャーどころのブラウザーでは動くみたいです。
javascript:(
function () {
'use strict';
var jalastmod = document.querySelector('.contributors-sub time').dateTime;
var japarsedate = Date.parse(jalastmod);
var japath = location.pathname;
var enpath = japath.replace('\/ja\/', '\/en-US\/');
var enurl = 'https://developer.mozilla.org' + enpath;
var xhr= new XMLHttpRequest();
xhr.open("GET", enurl);
xhr.responseType = "document";
xhr.send();
xhr.addEventListener("load", function(ev){
var dom = ev.target.responseXML;
var enlastmod = dom.querySelector('.contributors-sub time').dateTime;
var enparsedate = Date.parse(enlastmod);
if (japarsedate - enparsedate < 0 ) {
window.alert(jalastmod + " :ja\n" + enlastmod + " :en\n" +"日本語の情報が古いです。");
}
else {
window.alert("☺");
}
})
}
)();
まあ、やってることとしてはMDN日本語版と英語版のページフッターにある<time>
要素を引っこ抜いて比較してるだけです。document.querySelector()
バンザイって感じですね。
以下追記。
MDN の日本語ドキュメンテーション状況を確認できるページを教えてもらいました。こちらであればどのページが英語版と同期しているのか、存在するけれども古い翻訳か、はたまた未訳かを一度に見ることができます。俯瞰したい場合はこちらを使えばよさそうですね。
さらに追記。@ArcCosineさんにリファクタリングしてもらいました。
fetchだとこう書けるんですね!(書き方がよく分からなかったので…)
追加情報をいただいたお二人に感謝します。