Blogger自作次ページタイトル設定・高速化

投稿を表示したときに下に表示される次の投稿や前の投稿をタイトル名に変更する自作テンプレートのjavascriptt高速化版です。

Blogger自作次ページタイトル設定 の高速化版でタイトル名の取得時間が短くなります。「アーカイブ」ガジェットを使っている場合のみ有効です。

次の投稿や前の投稿は同じ年月に公開されている場合が多いので、アーカイブのリンクのurlとタイトル名を取得して、次の投稿や前の投稿にあれば使い、無ければfeedから取得するように改良しています。feedを使う回数を少なくするほど、短時間で処理が終わります。
<b:if cond='data:view.isPost'>
<script>
/*<![CDATA[*/
document.addEventListener('DOMContentLoaded',setPagerLinkTitleName);
function setPagerLinkTitleName(){
  let linklist=new Array();
  let objlist=document.getElementById('BlogArchive1').getElementsByTagName('a');
  for(let i=0;i<objlist.length;i++) linklist[objlist[i].getAttribute('href')]=objlist[i].textContent;
  setPageTitle('Blog1_blog-pager-older-link',linklist);
  setPageTitle('Blog1_blog-pager-newer-link',linklist);
}
function setPageTitle(objname,linklist){
  let obj=document.getElementById(objname);
  if(!obj) return;
  let link=obj.getAttribute('href');
  if(linklist[link]){
    obj.textContent=linklist[link];
    obj.setAttribute('title',linklist[link]);
    return;
  }
  const page_path=link.split(location.hostname)[1];
  let feedUrl='/feeds/posts/summary?alt=json&path='+page_path+'&max-results=1';
  fetch(feedUrl)
  .then(response=>response.json())
  .then(json=>{
    if(json.feed.entry&&json.feed.entry.length>0) obj.textContent=json.feed.entry[0].title.$t;obj.setAttribute('title',json.feed.entry[0].title.$t);
  })
  .catch(error=>console.log(error));
}
/*]]>*/
</script>
</b:if>
この記事のタイトルとURLをコピーする blogger
blogger