Diff
checker
文本
文本
圖像
文檔
Excel
文件夾
Legal
Enterprise
桌面版
定價
登入
下載 Diffchecker 桌面版
比較文本
尋找兩個文字檔案之間的差異
工具
歷史
即時編輯器
摺疊未變更行
關閉換行
檢視
拆分
統一
比對精度
智能
單詞
字符
語法突出顯示
選擇語法
忽略
文字轉換
前往第一個差異
編輯輸入
Diffchecker Desktop
執行Diffchecker最安全的方式。取得Diffchecker桌面應用程式:您的差異永遠不會離開您的電腦!
取得桌面版
HTML Sitemap Widget (all posts link modify)
建立於
4 年前
差異永不過期
清除
匯出
分享
解釋
4 刪除
行
總計
刪除
字符
總計
刪除
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
360 行
全部複製
15 新增
行
總計
新增
字符
總計
新增
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
367 行
全部複製
<div id="bp_toc">読込中...</div>
<div id="bp_toc">読込中...</div>
<script type="text/javascript">
<script type="text/javascript">
// ---------------------------------------------------
// ---------------------------------------------------
// BLOGTOC
// BLOGTOC
// ---------------------------------------------------
// ---------------------------------------------------
// BlogToc creates a clickable Table Of Contents for
// BlogToc creates a clickable Table Of Contents for
// Blogger Blogs.
// Blogger Blogs.
// It uses the JSON post feed, and create a ToC of it.
// It uses the JSON post feed, and create a ToC of it.
// The ToC can be sorted by title or by date, both
// The ToC can be sorted by title or by date, both
// ascending and descending, and can be filtered by
// ascending and descending, and can be filtered by
// label.
// label.
// ---------------------------------------------------
// ---------------------------------------------------
// Author: Syed Faizan Ali
// Author: Syed Faizan Ali
// Url: https://www.mybloggerlab.com
// Url: https://www.mybloggerlab.com
// Version: 2
// Version: 2
// Date: 2007-04-12
// Date: 2007-04-12
// ---------------------------------------------------
// ---------------------------------------------------
// Japanese Localization by Fujiyan.
// Japanese Localization by Fujiyan.
// Url: https://fujilogic.blogspot.com/2019/05/sitemap.html
// Url: https://fujilogic.blogspot.com/2019/05/sitemap.html
// ---------------------------------------------------
// ---------------------------------------------------
// global arrays
// global arrays
var postTitle = new Array(); // array of posttitles
var postTitle = new Array(); // array of posttitles
var postUrl = new Array(); // array of posturls
var postUrl = new Array(); // array of posturls
var postDate = new Array(); // array of post publish dates
var postDate = new Array(); // array of post publish dates
var postSum = new Array(); // array of post summaries
var postSum = new Array(); // array of post summaries
var postLabels = new Array();// array of post labels
var postLabels = new Array();// array of post labels
// global variables
// global variables
var sortBy = "datenewest"; // default value for sorting ToC
var sortBy = "datenewest"; // default value for sorting ToC
var tocLoaded = false; // true if feed is read and ToC can be displayed
var tocLoaded = false; // true if feed is read and ToC can be displayed
var numChars = 250; // マウスオン時にツールチップ表示する概要文字数
var numChars = 250; // マウスオン時にツールチップ表示する概要文字数
var postFilter = ''; // デフォルトで表示するラベル名
var postFilter = ''; // デフォルトで表示するラベル名
var tocdiv = document.getElementById("bp_toc"); //the toc container
var tocdiv = document.getElementById("bp_toc"); //the toc container
var totalEntires =0; //Entries grabbed till now
var totalEntires =0; //Entries grabbed till now
var totalPosts =0; //Total number of posts in the blog.
var totalPosts =0; //Total number of posts in the blog.
// main callback function
// main callback function
function loadtoc(json) {
function loadtoc(json) {
function getPostData() {
function getPostData() {
// this functions reads all postdata from the json-feed and stores it in arrays
// this functions reads all postdata from the json-feed and stores it in arrays
if ("entry" in json.feed) {
if ("entry" in json.feed) {
var numEntries = json.feed.entry.length;
var numEntries = json.feed.entry.length;
totalEntires = totalEntires + numEntries;
totalEntires = totalEntires + numEntries;
totalPosts=json.feed.openSearch$totalResults.$t
totalPosts=json.feed.openSearch$totalResults.$t
if(totalPosts>totalEntires)
if(totalPosts>totalEntires)
{
{
var nextjsoncall = document.createElement('script');
var nextjsoncall = document.createElement('script');
nextjsoncall.type = 'text/javascript';
nextjsoncall.type = 'text/javascript';
startindex=totalEntires+1;
startindex=totalEntires+1;
nextjsoncall.setAttribute("src", "/feeds/posts/summary?start-index=" + startindex + "&max-results=50&alt=json-in-script&callback=loadtoc");
nextjsoncall.setAttribute("src", "/feeds/posts/summary?start-index=" + startindex + "&max-results=50&alt=json-in-script&callback=loadtoc");
tocdiv.appendChild(nextjsoncall);
tocdiv.appendChild(nextjsoncall);
}
}
// main loop gets all the entries from the feed
// main loop gets all the entries from the feed
for (var i = 0; i < numEntries; i++) {
for (var i = 0; i < numEntries; i++) {
// get the entry from the feed
// get the entry from the feed
var entry = json.feed.entry[i];
var entry = json.feed.entry[i];
// get the posttitle from the entry
// get the posttitle from the entry
var posttitle = entry.title.$t;
var posttitle = entry.title.$t;
// get the post date from the entry
// get the post date from the entry
var postdate = entry.published.$t.substring(0,10).replace(/-/g,"/");
var postdate = entry.published.$t.substring(0,10).replace(/-/g,"/");
// get the post url from the entry
// get the post url from the entry
var posturl;
var posturl;
for (var k = 0; k < entry.link.length; k++) {
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
if (entry.link[k].rel == 'alternate') {
posturl = entry.link[k].href;
posturl = entry.link[k].href;
break;
break;
}
}
}
}
// get the post contents from the entry
// get the post contents from the entry
// strip all html-characters, and reduce it to a summary
// strip all html-characters, and reduce it to a summary
if ("content" in entry) {
if ("content" in entry) {
var postcontent = entry.content.$t;}
var postcontent = entry.content.$t;}
else
else
if ("summary" in entry) {
if ("summary" in entry) {
var postcontent = entry.summary.$t;}
var postcontent = entry.summary.$t;}
else var postcontent = "";
else var postcontent = "";
// strip off all html-tags
// strip off all html-tags
var re = /<\S[^>]*>/g;
var re = /<\S[^>]*>/g;
postcontent = postcontent.replace(re, "");
postcontent = postcontent.replace(re, "");
// reduce postcontent to numchar characters, and then cut it off at the last whole word
// reduce postcontent to numchar characters, and then cut it off at the last whole word
if (postcontent.length > numChars) {
if (postcontent.length > numChars) {
postcontent = postcontent.substring(0,numChars);
postcontent = postcontent.substring(0,numChars);
var quoteEnd = postcontent.lastIndexOf(" ");
var quoteEnd = postcontent.lastIndexOf(" ");
postcontent = postcontent.substring(0,quoteEnd) + '...';
postcontent = postcontent.substring(0,quoteEnd) + '...';
}
}
// get the post labels from the entry
// get the post labels from the entry
var pll = '';
var pll = '';
if ("category" in entry) {
if ("category" in entry) {
for (var k = 0; k < entry.category.length; k++) {
for (var k = 0; k < entry.category.length; k++) {
pll += '<a href="javascript:filterPosts(\'' + entry.category[k].term + '\');" title="ラベル 「' + entry.category[k].term + '」 の記事を表示">' + entry.category[k].term + '</a>, ';
pll += '<a href="javascript:filterPosts(\'' + entry.category[k].term + '\');" title="ラベル 「' + entry.category[k].term + '」 の記事を表示">' + entry.category[k].term + '</a>, ';
}
}
var l = pll.lastIndexOf(',');
var l = pll.lastIndexOf(',');
if (l != -1) { pll = pll.substring(0,l); }
if (l != -1) { pll = pll.substring(0,l); }
}
}
// add the post data to the arrays
// add the post data to the arrays
postTitle.push(posttitle);
postTitle.push(posttitle);
postDate.push(postdate);
postDate.push(postdate);
postUrl.push(posturl);
postUrl.push(posturl);
postSum.push(postcontent);
postSum.push(postcontent);
postLabels.push(pll);
postLabels.push(pll);
}
}
}
}
if(totalEntires==totalPosts) {tocLoaded=true;showToc();}
if(totalEntires==totalPosts) {tocLoaded=true;showToc();}
} // end of getPostData
} // end of getPostData
// start of showtoc function body
// start of showtoc function body
// get the number of entries that are in the feed
// get the number of entries that are in the feed
// numEntries = json.feed.entry.length;
// numEntries = json.feed.entry.length;
// get the postdata from the feed
// get the postdata from the feed
getPostData();
getPostData();
// sort the arrays
// sort the arrays
sortPosts(sortBy);
sortPosts(sortBy);
tocLoaded = true;
tocLoaded = true;
}
}
// filter and sort functions
// filter and sort functions
function filterPosts(filter) {
function filterPosts(filter) {
// This function changes the filter
// This function changes the filter
// and displays the filtered list of posts
// and displays the filtered list of posts
// document.getElementById("bp_toc").scrollTop = document.getElementById("bp_toc").offsetTop;;
// document.getElementById("bp_toc").scrollTop = document.getElementById("bp_toc").offsetTop;;
postFilter = filter;
postFilter = filter;
displayToc(postFilter);
displayToc(postFilter);
} // end filterPosts
} // end filterPosts
function allPosts() {
function allPosts() {
// This function resets the filter
// This function resets the filter
// and displays all posts
// and displays all posts
postFilter = '';
postFilter = '';
displayToc(postFilter);
displayToc(postFilter);
} // end allPosts
} // end allPosts
function sortPosts(sortBy) {
function sortPosts(sortBy) {
// This function is a simple bubble-sort routine
// This function is a simple bubble-sort routine
// that sorts the posts
// that sorts the posts
function swapPosts(x,y) {
function swapPosts(x,y) {
// Swaps 2 ToC-entries by swapping all array-elements
// Swaps 2 ToC-entries by swapping all array-elements
var temp = postTitle[x];
var temp = postTitle[x];
postTitle[x] = postTitle[y];
postTitle[x] = postTitle[y];
postTitle[y] = temp;
postTitle[y] = temp;
var temp = postDate[x];
var temp = postDate[x];
postDate[x] = postDate[y];
postDate[x] = postDate[y];
postDate[y] = temp;
postDate[y] = temp;
var temp = postUrl[x];
var temp = postUrl[x];
postUrl[x] = postUrl[y];
postUrl[x] = postUrl[y];
postUrl[y] = temp;
postUrl[y] = temp;
var temp = postSum[x];
var temp = postSum[x];
postSum[x] = postSum[y];
postSum[x] = postSum[y];
postSum[y] = temp;
postSum[y] = temp;
var temp = postLabels[x];
var temp = postLabels[x];
postLabels[x] = postLabels[y];
postLabels[x] = postLabels[y];
postLabels[y] = temp;
postLabels[y] = temp;
} // end swapPosts
} // end swapPosts
for (var i=0; i < postTitle.length-1; i++) {
for (var i=0; i < postTitle.length-1; i++) {
for (var j=i+1; j<postTitle.length; j++) {
for (var j=i+1; j<postTitle.length; j++) {
if (sortBy == "titleasc") { if (postTitle[i] > postTitle[j]) { swapPosts(i,j); } }
if (sortBy == "titleasc") { if (postTitle[i] > postTitle[j]) { swapPosts(i,j); } }
if (sortBy == "titledesc") { if (postTitle[i] < postTitle[j]) { swapPosts(i,j); } }
if (sortBy == "titledesc") { if (postTitle[i] < postTitle[j]) { swapPosts(i,j); } }
if (sortBy == "dateoldest") { if (postDate[i] > postDate[j]) { swapPosts(i,j); } }
if (sortBy == "dateoldest") { if (postDate[i] > postDate[j]) { swapPosts(i,j); } }
if (sortBy == "datenewest") { if (postDate[i] < postDate[j]) { swapPosts(i,j); } }
if (sortBy == "datenewest") { if (postDate[i] < postDate[j]) { swapPosts(i,j); } }
}
}
}
}
} // end sortPosts
} // end sortPosts
// displaying the toc
// displaying the toc
function displayToc(filter) {
function displayToc(filter) {
// this function creates a three-column table and adds it to the screen
// this function creates a three-column table and adds it to the screen
var numDisplayed = 0;
var numDisplayed = 0;
var tocTable = '';
var tocTable = '';
var tocHead1 = 'タイトル';
var tocHead1 = 'タイトル';
var tocTool1 = 'タイトル順に並べ替え';
var tocTool1 = 'タイトル順に並べ替え';
var tocHead2 = '投稿日';
var tocHead2 = '投稿日';
var tocTool2 = '投稿日順に並べ替え';
var tocTool2 = '投稿日順に並べ替え';
複製
已複製
複製
已複製
var tocHead3 = 'ラベル
';
var tocHead3 = 'ラベル
を選択
';
var tocTool3 = '';
var tocTool3 = '';
if (sortBy == "titleasc") {
if (sortBy == "titleasc") {
tocTool1 += ' (降順)';
tocTool1 += ' (降順)';
tocTool2 += ' (昇順)';
tocTool2 += ' (昇順)';
}
}
if (sortBy == "titledesc") {
if (sortBy == "titledesc") {
tocTool1 += ' (昇順)';
tocTool1 += ' (昇順)';
tocTool2 += ' (昇順)';
tocTool2 += ' (昇順)';
}
}
if (sortBy == "dateoldest") {
if (sortBy == "dateoldest") {
tocTool1 += ' (昇順)';
tocTool1 += ' (昇順)';
tocTool2 += ' (昇順)';
tocTool2 += ' (昇順)';
}
}
if (sortBy == "datenewest") {
if (sortBy == "datenewest") {
tocTool1 += ' (昇順)';
tocTool1 += ' (昇順)';
tocTool2 += ' (降順)';
tocTool2 += ' (降順)';
}
}
if (postFilter != '') {
if (postFilter != '') {
複製
已複製
複製
已複製
tocTool3 = '全ての記事を表示
';
tocTool3 = '全ての記事を表示
する
';
}
}
tocTable += '<table>';
tocTable += '<table>';
tocTable += '<tr>';
tocTable += '<tr>';
tocTable += '<td class="toc-header-col1">';
tocTable += '<td class="toc-header-col1">';
tocTable += '<a href="javascript:toggleTitleSort();" title="' + tocTool1 + '">' + tocHead1 + '</a>';
tocTable += '<a href="javascript:toggleTitleSort();" title="' + tocTool1 + '">' + tocHead1 + '</a>';
tocTable += '</td>';
tocTable += '</td>';
tocTable += '<td class="toc-header-col2">';
tocTable += '<td class="toc-header-col2">';
tocTable += '<a href="javascript:toggleDateSort();" title="' + tocTool2 + '">' + tocHead2 + '</a>';
tocTable += '<a href="javascript:toggleDateSort();" title="' + tocTool2 + '">' + tocHead2 + '</a>';
tocTable += '</td>';
tocTable += '</td>';
tocTable += '<td class="toc-header-col3">';
tocTable += '<td class="toc-header-col3">';
複製
已複製
複製
已複製
tocTable += '<
a href="javascript:allPosts();" title="' + tocTool3 + '"
>' + tocHead3 + '</
a
>';
tocTable += '<
span
>' + tocHead3 + '</
span
>';
tocTable += '</td>';
tocTable += '</td>';
tocTable += '</tr>';
tocTable += '</tr>';
for (var i = 0; i < postTitle.length; i++) {
for (var i = 0; i < postTitle.length; i++) {
if (filter == '') {
if (filter == '') {
tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '" title="' + postSum[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td><td class="toc-entry-col3">' + postLabels[i] + '</td></tr>';
tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '" title="' + postSum[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td><td class="toc-entry-col3">' + postLabels[i] + '</td></tr>';
numDisplayed++;
numDisplayed++;
} else {
} else {
z = postLabels[i].lastIndexOf(filter);
z = postLabels[i].lastIndexOf(filter);
if ( z!= -1) {
if ( z!= -1) {
tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '" title="' + postSum[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td><td class="toc-entry-col3">' + postLabels[i] + '</td></tr>';
tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '" title="' + postSum[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td><td class="toc-entry-col3">' + postLabels[i] + '</td></tr>';
numDisplayed++;
numDisplayed++;
}
}
}
}
}
}
tocTable += '</table>';
tocTable += '</table>';
if (numDisplayed == postTitle.length) {
if (numDisplayed == postTitle.length) {
複製
已複製
複製
已複製
var tocNote = '<span class="toc-note">全 ' + postTitle.length + ' 件の記事を表示
中
<br/></span>';
var tocNote = '<span class="toc-note">全 ' + postTitle.length + ' 件の記事を表示
しています
<br/></span>';
}
}
else {
else {
var tocNote = '<span class="toc-note">全 '+ postTitle.length + ' 件中 ラベル「<b>';
var tocNote = '<span class="toc-note">全 '+ postTitle.length + ' 件中 ラベル「<b>';
複製
已複製
複製
已複製
tocNote += postFilter + '</b>」の ' + numDisplayed + '
件を表示中
<br/><
/span>';
tocNote += postFilter + '</b>」の ' + numDisplayed + '
件を表示しています
<br/><
a href="javascript:allPosts();">' + tocTool3 + '</a><
/span>';
}
}
tocdiv.innerHTML = tocNote + tocTable;
tocdiv.innerHTML = tocNote + tocTable;
} // end of displayToc
} // end of displayToc
function toggleTitleSort() {
function toggleTitleSort() {
if (sortBy == "titleasc") { sortBy = "titledesc"; }
if (sortBy == "titleasc") { sortBy = "titledesc"; }
else { sortBy = "titleasc"; }
else { sortBy = "titleasc"; }
sortPosts(sortBy);
sortPosts(sortBy);
displayToc(postFilter);
displayToc(postFilter);
} // end toggleTitleSort
} // end toggleTitleSort
function toggleDateSort() {
function toggleDateSort() {
if (sortBy == "datenewest") { sortBy = "dateoldest"; }
if (sortBy == "datenewest") { sortBy = "dateoldest"; }
else { sortBy = "datenewest"; }
else { sortBy = "datenewest"; }
sortPosts(sortBy);
sortPosts(sortBy);
displayToc(postFilter);
displayToc(postFilter);
} // end toggleTitleSort
} // end toggleTitleSort
function showToc() {
function showToc() {
if (tocLoaded) {
if (tocLoaded) {
displayToc(postFilter);
displayToc(postFilter);
var toclink = document.getElementById("toclink");
var toclink = document.getElementById("toclink");
}
}
}
}
</script>
</script>
<script src="/feeds/posts/default?alt=json-in-script&max-results=50&callback=loadtoc" type="text/javascript"></script>
<script src="/feeds/posts/default?alt=json-in-script&max-results=50&callback=loadtoc" type="text/javascript"></script>
<style>
<style>
#bp_toc {
#bp_toc {
margin: 0 auto 2em;
margin: 0 auto 2em;
padding: 0;
padding: 0;
width: 100%;
width: 100%;
}
}
#bp_toc tbody {
#bp_toc tbody {
border-bottom: 1px solid #ddd;
border-bottom: 1px solid #ddd;
}
}
#bp_toc table {
#bp_toc table {
width: 100%;
width: 100%;
margin: 0 auto;
margin: 0 auto;
counter-reset: rowNumber;
counter-reset: rowNumber;
border-collapse: collapse;
border-collapse: collapse;
border-left: 1px solid #ddd;
border-left: 1px solid #ddd;
}
}
#bp_toc table td {
#bp_toc table td {
border-right: 1px solid #ddd;
border-right: 1px solid #ddd;
}
}
.toc-note {
.toc-note {
line-height: 1.5em;
line-height: 1.5em;
margin-bottom: 1em;
margin-bottom: 1em;
display: block;
display: block;
text-align: center;
text-align: center;
}
}
複製
已複製
複製
已複製
.toc-note a {/*全記事表示に戻すリンク*/
}
.toc-note a:hover {
}
#bp_toc tr:nth-child(2n) {
#bp_toc tr:nth-child(2n) {
background: rgba(0,80,200,.1);/*奇数行の背景色*/
background: rgba(0,80,200,.1);/*奇数行の背景色*/
}
}
.toc-entry-col1 a:hover {
.toc-entry-col1 a:hover {
background: rgba(0,80,200,.2);/*タイトルホバー時の背景色*/
background: rgba(0,80,200,.2);/*タイトルホバー時の背景色*/
text-decoration: none!important;
text-decoration: none!important;
}
}
複製
已複製
複製
已複製
#bp_toc table tr:first-child a
{/*ヘッダー*/
#bp_toc table tr:first-child a
,
#bp_toc table tr:first-child span
{/*ヘッダー*/
background: #bbb;
background: #bbb;
color: #fff!important;
color: #fff!important;
font-weight: bold;
font-weight: bold;
text-align: center;
text-align: center;
padding: 5px 0;
padding: 5px 0;
display: block;
display: block;
width: 100%;
width: 100%;
border-top: 1px solid #ddd;
border-top: 1px solid #ddd;
}
}
#bp_toc table tr:first-child a:hover {
#bp_toc table tr:first-child a:hover {
opacity: .8;
opacity: .8;
text-decoration: none;
text-decoration: none;
}
}
.toc-header-col1 {
.toc-header-col1 {
width: 55%;/*タイトル(番号含む)枠の幅*/
width: 55%;/*タイトル(番号含む)枠の幅*/
}
}
.toc-header-col2 {
.toc-header-col2 {
width: 12%;/*投稿日枠の幅*/
width: 12%;/*投稿日枠の幅*/
}
}
.toc-header-col3 {
.toc-header-col3 {
width: 33%;/*ラベル枠の幅*/
width: 33%;/*ラベル枠の幅*/
}
}
#bp_toc table tr td.toc-entry-col1:first-child::before {
#bp_toc table tr td.toc-entry-col1:first-child::before {
content: counter(rowNumber);
content: counter(rowNumber);
width: 2.6em;/*記事番号枠の幅*/
width: 2.6em;/*記事番号枠の幅*/
text-align: center;
text-align: center;
padding: 12px 3px 0;
padding: 12px 3px 0;
border-right: 1px solid #ddd;
border-right: 1px solid #ddd;
}
}
.toc-entry-col1 {/*記事番号*/
.toc-entry-col1 {/*記事番号*/
display: flex;
display: flex;
counter-increment: rowNumber;
counter-increment: rowNumber;
font-size: 12px;
font-size: 12px;
line-height: 1.5em;
line-height: 1.5em;
}
}
.toc-entry-col1 a {/*タイトル*/
.toc-entry-col1 a {/*タイトル*/
display: block;
display: block;
height: 100%;
height: 100%;
width: 100%;
width: 100%;
font-size: 14px;
font-size: 14px;
font-weight: bold;
font-weight: bold;
padding: 10px .5em 10px;
padding: 10px .5em 10px;
line-height: 1.3em;
line-height: 1.3em;
color: inherit!important;
color: inherit!important;
}
}
.toc-entry-col2 {/*投稿日*/
.toc-entry-col2 {/*投稿日*/
font-size: 13px;
font-size: 13px;
text-align: center;
text-align: center;
}
}
.toc-entry-col3 {/*ラベル*/
.toc-entry-col3 {/*ラベル*/
font-size: 13px;
font-size: 13px;
padding: 5px;
padding: 5px;
line-height: 1.5em;
line-height: 1.5em;
}
}
</style>
</style>
已保存差異
原始文本
開啟檔案
<div id="bp_toc">読込中...</div> <script type="text/javascript"> // --------------------------------------------------- // BLOGTOC // --------------------------------------------------- // BlogToc creates a clickable Table Of Contents for // Blogger Blogs. // It uses the JSON post feed, and create a ToC of it. // The ToC can be sorted by title or by date, both // ascending and descending, and can be filtered by // label. // --------------------------------------------------- // Author: Syed Faizan Ali // Url: https://www.mybloggerlab.com // Version: 2 // Date: 2007-04-12 // --------------------------------------------------- // Japanese Localization by Fujiyan. // Url: https://fujilogic.blogspot.com/2019/05/sitemap.html // --------------------------------------------------- // global arrays var postTitle = new Array(); // array of posttitles var postUrl = new Array(); // array of posturls var postDate = new Array(); // array of post publish dates var postSum = new Array(); // array of post summaries var postLabels = new Array();// array of post labels // global variables var sortBy = "datenewest"; // default value for sorting ToC var tocLoaded = false; // true if feed is read and ToC can be displayed var numChars = 250; // マウスオン時にツールチップ表示する概要文字数 var postFilter = ''; // デフォルトで表示するラベル名 var tocdiv = document.getElementById("bp_toc"); //the toc container var totalEntires =0; //Entries grabbed till now var totalPosts =0; //Total number of posts in the blog. // main callback function function loadtoc(json) { function getPostData() { // this functions reads all postdata from the json-feed and stores it in arrays if ("entry" in json.feed) { var numEntries = json.feed.entry.length; totalEntires = totalEntires + numEntries; totalPosts=json.feed.openSearch$totalResults.$t if(totalPosts>totalEntires) { var nextjsoncall = document.createElement('script'); nextjsoncall.type = 'text/javascript'; startindex=totalEntires+1; nextjsoncall.setAttribute("src", "/feeds/posts/summary?start-index=" + startindex + "&max-results=50&alt=json-in-script&callback=loadtoc"); tocdiv.appendChild(nextjsoncall); } // main loop gets all the entries from the feed for (var i = 0; i < numEntries; i++) { // get the entry from the feed var entry = json.feed.entry[i]; // get the posttitle from the entry var posttitle = entry.title.$t; // get the post date from the entry var postdate = entry.published.$t.substring(0,10).replace(/-/g,"/"); // get the post url from the entry var posturl; for (var k = 0; k < entry.link.length; k++) { if (entry.link[k].rel == 'alternate') { posturl = entry.link[k].href; break; } } // get the post contents from the entry // strip all html-characters, and reduce it to a summary if ("content" in entry) { var postcontent = entry.content.$t;} else if ("summary" in entry) { var postcontent = entry.summary.$t;} else var postcontent = ""; // strip off all html-tags var re = /<\S[^>]*>/g; postcontent = postcontent.replace(re, ""); // reduce postcontent to numchar characters, and then cut it off at the last whole word if (postcontent.length > numChars) { postcontent = postcontent.substring(0,numChars); var quoteEnd = postcontent.lastIndexOf(" "); postcontent = postcontent.substring(0,quoteEnd) + '...'; } // get the post labels from the entry var pll = ''; if ("category" in entry) { for (var k = 0; k < entry.category.length; k++) { pll += '<a href="javascript:filterPosts(\'' + entry.category[k].term + '\');" title="ラベル 「' + entry.category[k].term + '」 の記事を表示">' + entry.category[k].term + '</a>, '; } var l = pll.lastIndexOf(','); if (l != -1) { pll = pll.substring(0,l); } } // add the post data to the arrays postTitle.push(posttitle); postDate.push(postdate); postUrl.push(posturl); postSum.push(postcontent); postLabels.push(pll); } } if(totalEntires==totalPosts) {tocLoaded=true;showToc();} } // end of getPostData // start of showtoc function body // get the number of entries that are in the feed // numEntries = json.feed.entry.length; // get the postdata from the feed getPostData(); // sort the arrays sortPosts(sortBy); tocLoaded = true; } // filter and sort functions function filterPosts(filter) { // This function changes the filter // and displays the filtered list of posts // document.getElementById("bp_toc").scrollTop = document.getElementById("bp_toc").offsetTop;; postFilter = filter; displayToc(postFilter); } // end filterPosts function allPosts() { // This function resets the filter // and displays all posts postFilter = ''; displayToc(postFilter); } // end allPosts function sortPosts(sortBy) { // This function is a simple bubble-sort routine // that sorts the posts function swapPosts(x,y) { // Swaps 2 ToC-entries by swapping all array-elements var temp = postTitle[x]; postTitle[x] = postTitle[y]; postTitle[y] = temp; var temp = postDate[x]; postDate[x] = postDate[y]; postDate[y] = temp; var temp = postUrl[x]; postUrl[x] = postUrl[y]; postUrl[y] = temp; var temp = postSum[x]; postSum[x] = postSum[y]; postSum[y] = temp; var temp = postLabels[x]; postLabels[x] = postLabels[y]; postLabels[y] = temp; } // end swapPosts for (var i=0; i < postTitle.length-1; i++) { for (var j=i+1; j<postTitle.length; j++) { if (sortBy == "titleasc") { if (postTitle[i] > postTitle[j]) { swapPosts(i,j); } } if (sortBy == "titledesc") { if (postTitle[i] < postTitle[j]) { swapPosts(i,j); } } if (sortBy == "dateoldest") { if (postDate[i] > postDate[j]) { swapPosts(i,j); } } if (sortBy == "datenewest") { if (postDate[i] < postDate[j]) { swapPosts(i,j); } } } } } // end sortPosts // displaying the toc function displayToc(filter) { // this function creates a three-column table and adds it to the screen var numDisplayed = 0; var tocTable = ''; var tocHead1 = 'タイトル'; var tocTool1 = 'タイトル順に並べ替え'; var tocHead2 = '投稿日'; var tocTool2 = '投稿日順に並べ替え'; var tocHead3 = 'ラベル'; var tocTool3 = ''; if (sortBy == "titleasc") { tocTool1 += ' (降順)'; tocTool2 += ' (昇順)'; } if (sortBy == "titledesc") { tocTool1 += ' (昇順)'; tocTool2 += ' (昇順)'; } if (sortBy == "dateoldest") { tocTool1 += ' (昇順)'; tocTool2 += ' (昇順)'; } if (sortBy == "datenewest") { tocTool1 += ' (昇順)'; tocTool2 += ' (降順)'; } if (postFilter != '') { tocTool3 = '全ての記事を表示'; } tocTable += '<table>'; tocTable += '<tr>'; tocTable += '<td class="toc-header-col1">'; tocTable += '<a href="javascript:toggleTitleSort();" title="' + tocTool1 + '">' + tocHead1 + '</a>'; tocTable += '</td>'; tocTable += '<td class="toc-header-col2">'; tocTable += '<a href="javascript:toggleDateSort();" title="' + tocTool2 + '">' + tocHead2 + '</a>'; tocTable += '</td>'; tocTable += '<td class="toc-header-col3">'; tocTable += '<a href="javascript:allPosts();" title="' + tocTool3 + '">' + tocHead3 + '</a>'; tocTable += '</td>'; tocTable += '</tr>'; for (var i = 0; i < postTitle.length; i++) { if (filter == '') { tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '" title="' + postSum[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td><td class="toc-entry-col3">' + postLabels[i] + '</td></tr>'; numDisplayed++; } else { z = postLabels[i].lastIndexOf(filter); if ( z!= -1) { tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '" title="' + postSum[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td><td class="toc-entry-col3">' + postLabels[i] + '</td></tr>'; numDisplayed++; } } } tocTable += '</table>'; if (numDisplayed == postTitle.length) { var tocNote = '<span class="toc-note">全 ' + postTitle.length + ' 件の記事を表示中<br/></span>'; } else { var tocNote = '<span class="toc-note">全 '+ postTitle.length + ' 件中 ラベル「<b>'; tocNote += postFilter + '</b>」の ' + numDisplayed + ' 件を表示中<br/></span>'; } tocdiv.innerHTML = tocNote + tocTable; } // end of displayToc function toggleTitleSort() { if (sortBy == "titleasc") { sortBy = "titledesc"; } else { sortBy = "titleasc"; } sortPosts(sortBy); displayToc(postFilter); } // end toggleTitleSort function toggleDateSort() { if (sortBy == "datenewest") { sortBy = "dateoldest"; } else { sortBy = "datenewest"; } sortPosts(sortBy); displayToc(postFilter); } // end toggleTitleSort function showToc() { if (tocLoaded) { displayToc(postFilter); var toclink = document.getElementById("toclink"); } } </script> <script src="/feeds/posts/default?alt=json-in-script&max-results=50&callback=loadtoc" type="text/javascript"></script> <style> #bp_toc { margin: 0 auto 2em; padding: 0; width: 100%; } #bp_toc tbody { border-bottom: 1px solid #ddd; } #bp_toc table { width: 100%; margin: 0 auto; counter-reset: rowNumber; border-collapse: collapse; border-left: 1px solid #ddd; } #bp_toc table td { border-right: 1px solid #ddd; } .toc-note { line-height: 1.5em; margin-bottom: 1em; display: block; text-align: center; } #bp_toc tr:nth-child(2n) { background: rgba(0,80,200,.1);/*奇数行の背景色*/ } .toc-entry-col1 a:hover { background: rgba(0,80,200,.2);/*タイトルホバー時の背景色*/ text-decoration: none!important; } #bp_toc table tr:first-child a {/*ヘッダー*/ background: #bbb; color: #fff!important; font-weight: bold; text-align: center; padding: 5px 0; display: block; width: 100%; border-top: 1px solid #ddd; } #bp_toc table tr:first-child a:hover { opacity: .8; text-decoration: none; } .toc-header-col1 { width: 55%;/*タイトル(番号含む)枠の幅*/ } .toc-header-col2 { width: 12%;/*投稿日枠の幅*/ } .toc-header-col3 { width: 33%;/*ラベル枠の幅*/ } #bp_toc table tr td.toc-entry-col1:first-child::before { content: counter(rowNumber); width: 2.6em;/*記事番号枠の幅*/ text-align: center; padding: 12px 3px 0; border-right: 1px solid #ddd; } .toc-entry-col1 {/*記事番号*/ display: flex; counter-increment: rowNumber; font-size: 12px; line-height: 1.5em; } .toc-entry-col1 a {/*タイトル*/ display: block; height: 100%; width: 100%; font-size: 14px; font-weight: bold; padding: 10px .5em 10px; line-height: 1.3em; color: inherit!important; } .toc-entry-col2 {/*投稿日*/ font-size: 13px; text-align: center; } .toc-entry-col3 {/*ラベル*/ font-size: 13px; padding: 5px; line-height: 1.5em; } </style>
更改後文本
開啟檔案
<div id="bp_toc">読込中...</div> <script type="text/javascript"> // --------------------------------------------------- // BLOGTOC // --------------------------------------------------- // BlogToc creates a clickable Table Of Contents for // Blogger Blogs. // It uses the JSON post feed, and create a ToC of it. // The ToC can be sorted by title or by date, both // ascending and descending, and can be filtered by // label. // --------------------------------------------------- // Author: Syed Faizan Ali // Url: https://www.mybloggerlab.com // Version: 2 // Date: 2007-04-12 // --------------------------------------------------- // Japanese Localization by Fujiyan. // Url: https://fujilogic.blogspot.com/2019/05/sitemap.html // --------------------------------------------------- // global arrays var postTitle = new Array(); // array of posttitles var postUrl = new Array(); // array of posturls var postDate = new Array(); // array of post publish dates var postSum = new Array(); // array of post summaries var postLabels = new Array();// array of post labels // global variables var sortBy = "datenewest"; // default value for sorting ToC var tocLoaded = false; // true if feed is read and ToC can be displayed var numChars = 250; // マウスオン時にツールチップ表示する概要文字数 var postFilter = ''; // デフォルトで表示するラベル名 var tocdiv = document.getElementById("bp_toc"); //the toc container var totalEntires =0; //Entries grabbed till now var totalPosts =0; //Total number of posts in the blog. // main callback function function loadtoc(json) { function getPostData() { // this functions reads all postdata from the json-feed and stores it in arrays if ("entry" in json.feed) { var numEntries = json.feed.entry.length; totalEntires = totalEntires + numEntries; totalPosts=json.feed.openSearch$totalResults.$t if(totalPosts>totalEntires) { var nextjsoncall = document.createElement('script'); nextjsoncall.type = 'text/javascript'; startindex=totalEntires+1; nextjsoncall.setAttribute("src", "/feeds/posts/summary?start-index=" + startindex + "&max-results=50&alt=json-in-script&callback=loadtoc"); tocdiv.appendChild(nextjsoncall); } // main loop gets all the entries from the feed for (var i = 0; i < numEntries; i++) { // get the entry from the feed var entry = json.feed.entry[i]; // get the posttitle from the entry var posttitle = entry.title.$t; // get the post date from the entry var postdate = entry.published.$t.substring(0,10).replace(/-/g,"/"); // get the post url from the entry var posturl; for (var k = 0; k < entry.link.length; k++) { if (entry.link[k].rel == 'alternate') { posturl = entry.link[k].href; break; } } // get the post contents from the entry // strip all html-characters, and reduce it to a summary if ("content" in entry) { var postcontent = entry.content.$t;} else if ("summary" in entry) { var postcontent = entry.summary.$t;} else var postcontent = ""; // strip off all html-tags var re = /<\S[^>]*>/g; postcontent = postcontent.replace(re, ""); // reduce postcontent to numchar characters, and then cut it off at the last whole word if (postcontent.length > numChars) { postcontent = postcontent.substring(0,numChars); var quoteEnd = postcontent.lastIndexOf(" "); postcontent = postcontent.substring(0,quoteEnd) + '...'; } // get the post labels from the entry var pll = ''; if ("category" in entry) { for (var k = 0; k < entry.category.length; k++) { pll += '<a href="javascript:filterPosts(\'' + entry.category[k].term + '\');" title="ラベル 「' + entry.category[k].term + '」 の記事を表示">' + entry.category[k].term + '</a>, '; } var l = pll.lastIndexOf(','); if (l != -1) { pll = pll.substring(0,l); } } // add the post data to the arrays postTitle.push(posttitle); postDate.push(postdate); postUrl.push(posturl); postSum.push(postcontent); postLabels.push(pll); } } if(totalEntires==totalPosts) {tocLoaded=true;showToc();} } // end of getPostData // start of showtoc function body // get the number of entries that are in the feed // numEntries = json.feed.entry.length; // get the postdata from the feed getPostData(); // sort the arrays sortPosts(sortBy); tocLoaded = true; } // filter and sort functions function filterPosts(filter) { // This function changes the filter // and displays the filtered list of posts // document.getElementById("bp_toc").scrollTop = document.getElementById("bp_toc").offsetTop;; postFilter = filter; displayToc(postFilter); } // end filterPosts function allPosts() { // This function resets the filter // and displays all posts postFilter = ''; displayToc(postFilter); } // end allPosts function sortPosts(sortBy) { // This function is a simple bubble-sort routine // that sorts the posts function swapPosts(x,y) { // Swaps 2 ToC-entries by swapping all array-elements var temp = postTitle[x]; postTitle[x] = postTitle[y]; postTitle[y] = temp; var temp = postDate[x]; postDate[x] = postDate[y]; postDate[y] = temp; var temp = postUrl[x]; postUrl[x] = postUrl[y]; postUrl[y] = temp; var temp = postSum[x]; postSum[x] = postSum[y]; postSum[y] = temp; var temp = postLabels[x]; postLabels[x] = postLabels[y]; postLabels[y] = temp; } // end swapPosts for (var i=0; i < postTitle.length-1; i++) { for (var j=i+1; j<postTitle.length; j++) { if (sortBy == "titleasc") { if (postTitle[i] > postTitle[j]) { swapPosts(i,j); } } if (sortBy == "titledesc") { if (postTitle[i] < postTitle[j]) { swapPosts(i,j); } } if (sortBy == "dateoldest") { if (postDate[i] > postDate[j]) { swapPosts(i,j); } } if (sortBy == "datenewest") { if (postDate[i] < postDate[j]) { swapPosts(i,j); } } } } } // end sortPosts // displaying the toc function displayToc(filter) { // this function creates a three-column table and adds it to the screen var numDisplayed = 0; var tocTable = ''; var tocHead1 = 'タイトル'; var tocTool1 = 'タイトル順に並べ替え'; var tocHead2 = '投稿日'; var tocTool2 = '投稿日順に並べ替え'; var tocHead3 = 'ラベルを選択'; var tocTool3 = ''; if (sortBy == "titleasc") { tocTool1 += ' (降順)'; tocTool2 += ' (昇順)'; } if (sortBy == "titledesc") { tocTool1 += ' (昇順)'; tocTool2 += ' (昇順)'; } if (sortBy == "dateoldest") { tocTool1 += ' (昇順)'; tocTool2 += ' (昇順)'; } if (sortBy == "datenewest") { tocTool1 += ' (昇順)'; tocTool2 += ' (降順)'; } if (postFilter != '') { tocTool3 = '全ての記事を表示する'; } tocTable += '<table>'; tocTable += '<tr>'; tocTable += '<td class="toc-header-col1">'; tocTable += '<a href="javascript:toggleTitleSort();" title="' + tocTool1 + '">' + tocHead1 + '</a>'; tocTable += '</td>'; tocTable += '<td class="toc-header-col2">'; tocTable += '<a href="javascript:toggleDateSort();" title="' + tocTool2 + '">' + tocHead2 + '</a>'; tocTable += '</td>'; tocTable += '<td class="toc-header-col3">'; tocTable += '<span>' + tocHead3 + '</span>'; tocTable += '</td>'; tocTable += '</tr>'; for (var i = 0; i < postTitle.length; i++) { if (filter == '') { tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '" title="' + postSum[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td><td class="toc-entry-col3">' + postLabels[i] + '</td></tr>'; numDisplayed++; } else { z = postLabels[i].lastIndexOf(filter); if ( z!= -1) { tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '" title="' + postSum[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td><td class="toc-entry-col3">' + postLabels[i] + '</td></tr>'; numDisplayed++; } } } tocTable += '</table>'; if (numDisplayed == postTitle.length) { var tocNote = '<span class="toc-note">全 ' + postTitle.length + ' 件の記事を表示しています<br/></span>'; } else { var tocNote = '<span class="toc-note">全 '+ postTitle.length + ' 件中 ラベル「<b>'; tocNote += postFilter + '</b>」の ' + numDisplayed + ' 件を表示しています<br/><a href="javascript:allPosts();">' + tocTool3 + '</a></span>'; } tocdiv.innerHTML = tocNote + tocTable; } // end of displayToc function toggleTitleSort() { if (sortBy == "titleasc") { sortBy = "titledesc"; } else { sortBy = "titleasc"; } sortPosts(sortBy); displayToc(postFilter); } // end toggleTitleSort function toggleDateSort() { if (sortBy == "datenewest") { sortBy = "dateoldest"; } else { sortBy = "datenewest"; } sortPosts(sortBy); displayToc(postFilter); } // end toggleTitleSort function showToc() { if (tocLoaded) { displayToc(postFilter); var toclink = document.getElementById("toclink"); } } </script> <script src="/feeds/posts/default?alt=json-in-script&max-results=50&callback=loadtoc" type="text/javascript"></script> <style> #bp_toc { margin: 0 auto 2em; padding: 0; width: 100%; } #bp_toc tbody { border-bottom: 1px solid #ddd; } #bp_toc table { width: 100%; margin: 0 auto; counter-reset: rowNumber; border-collapse: collapse; border-left: 1px solid #ddd; } #bp_toc table td { border-right: 1px solid #ddd; } .toc-note { line-height: 1.5em; margin-bottom: 1em; display: block; text-align: center; } .toc-note a {/*全記事表示に戻すリンク*/ } .toc-note a:hover { } #bp_toc tr:nth-child(2n) { background: rgba(0,80,200,.1);/*奇数行の背景色*/ } .toc-entry-col1 a:hover { background: rgba(0,80,200,.2);/*タイトルホバー時の背景色*/ text-decoration: none!important; } #bp_toc table tr:first-child a, #bp_toc table tr:first-child span {/*ヘッダー*/ background: #bbb; color: #fff!important; font-weight: bold; text-align: center; padding: 5px 0; display: block; width: 100%; border-top: 1px solid #ddd; } #bp_toc table tr:first-child a:hover { opacity: .8; text-decoration: none; } .toc-header-col1 { width: 55%;/*タイトル(番号含む)枠の幅*/ } .toc-header-col2 { width: 12%;/*投稿日枠の幅*/ } .toc-header-col3 { width: 33%;/*ラベル枠の幅*/ } #bp_toc table tr td.toc-entry-col1:first-child::before { content: counter(rowNumber); width: 2.6em;/*記事番号枠の幅*/ text-align: center; padding: 12px 3px 0; border-right: 1px solid #ddd; } .toc-entry-col1 {/*記事番号*/ display: flex; counter-increment: rowNumber; font-size: 12px; line-height: 1.5em; } .toc-entry-col1 a {/*タイトル*/ display: block; height: 100%; width: 100%; font-size: 14px; font-weight: bold; padding: 10px .5em 10px; line-height: 1.3em; color: inherit!important; } .toc-entry-col2 {/*投稿日*/ font-size: 13px; text-align: center; } .toc-entry-col3 {/*ラベル*/ font-size: 13px; padding: 5px; line-height: 1.5em; } </style>
尋找差異