diff --git a/en/assets/custom.js b/en/assets/custom.js
index 6fd7c44..579bde3 100644
--- a/en/assets/custom.js
+++ b/en/assets/custom.js
@@ -1,12 +1,12 @@
-(function() {
+var initAll = function () {
var path = window.location.pathname;
if (path.endsWith("/print.html")) {
return;
}
var images = document.querySelectorAll("main img")
- Array.prototype.forEach.call(images, function(img) {
- img.addEventListener("click", function() {
+ Array.prototype.forEach.call(images, function (img) {
+ img.addEventListener("click", function () {
BigPicture({
el: img,
});
@@ -14,91 +14,131 @@
});
// Un-active everything when you click it
- Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function(el) {
- el.addEventHandler("click", function() {
- Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function(el) {
+ Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function (el) {
+ el.addEventHandler("click", function () {
+ Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function (el) {
el.classList.remove("active");
});
el.classList.add("active");
});
});
- var updateFunction = function() {
-
- var id;
+ var updateFunction = function () {
+ var id = null;
var elements = document.getElementsByClassName("header");
- Array.prototype.forEach.call(elements, function(el) {
+ Array.prototype.forEach.call(elements, function (el) {
if (window.pageYOffset >= el.offsetTop) {
id = el;
}
});
- Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function(el) {
+ Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function (el) {
el.classList.remove("active");
});
- Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function(el) {
+ Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function (el) {
+ if (id == null) {
+ return;
+ }
if (id.href.localeCompare(el.href) == 0) {
el.classList.add("active");
}
});
};
- // Populate sidebar on load
- window.addEventListener('load', function() {
- var pagetoc = document.getElementsByClassName("pagetoc")[0];
- var elements = document.getElementsByClassName("header");
- Array.prototype.forEach.call(elements, function(el) {
- var link = document.createElement("a");
+ var pagetoc = document.getElementsByClassName("pagetoc")[0];
+ var elements = document.getElementsByClassName("header");
+ Array.prototype.forEach.call(elements, function (el) {
+ var link = document.createElement("a");
- // Indent shows hierarchy
- var indent = "";
- switch (el.parentElement.tagName) {
- case "H1":
- return;
- // case "H2":
- // indent = "20px";
- // break;
- case "H3":
- indent = "20px";
- break;
- case "H4":
- indent = "40px";
- break;
- default:
- break;
- }
+ // Indent shows hierarchy
+ var indent = "";
+ switch (el.parentElement.tagName) {
+ case "H1":
+ return;
+ case "H3":
+ indent = "20px";
+ break;
+ case "H4":
+ indent = "40px";
+ break;
+ default:
+ break;
+ }
- link.appendChild(document.createTextNode(el.text));
- link.style.paddingLeft = indent;
- link.href = el.href;
- pagetoc.appendChild(link);
- });
- updateFunction.call();
+ link.appendChild(document.createTextNode(el.text));
+ link.style.paddingLeft = indent;
+ link.href = el.href;
+ pagetoc.appendChild(link);
});
+ updateFunction.call();
// Handle active elements on scroll
window.addEventListener("scroll", updateFunction);
- var p = path.replace("index.html", "");
- p = p.replace(".html", "");
- var strs = p.split("/");
- if (strs[strs.length-1] == ""){
- strs.pop()
- }
- var str = strs[strs.length-1];
- var title = document.querySelector("main>h1,h2>a").textContent
- var gitalk = new Gitalk({
- clientID: '8e4b2cf9529ebb3dcad6',
- clientSecret: '6f6e8c23575a780bdb1faba3c17be08d76dc35f8',
- repo: 'rust-by-practice-comments',
- owner: 'sunface',
- admin: ["sunface"],
- labels: ['comments'],
- title: title,
- createIssueManually: false,
- id: str,
- distractionFreeMode: true
+ document.getElementById("theme-list").addEventListener("click", function (e) {
+ var iframe = document.querySelector('.giscus-frame');
+ if (!iframe) return;
+ var theme;
+ if (e.target.className === "theme") {
+ theme = e.target.id;
+ } else {
+ return;
+ }
+
+ // 若当前 mdbook 主题不是 Light 或 Rust ,则将 giscuz 主题设置为 transparent_dark
+ var giscusTheme = "light"
+ if (theme != "light" && theme != "rust") {
+ giscusTheme = "transparent_dark";
+ }
+
+ var msg = {
+ setConfig: {
+ theme: giscusTheme
+ }
+ };
+ iframe.contentWindow.postMessage({ giscus: msg }, 'https://giscus.app');
});
- gitalk.render('gitalk-container');
-})();
\ No newline at end of file
+
+ pagePath = pagePath.replace("index.md", "");
+ pagePath = pagePath.replace(".md", "");
+ if (pagePath.length > 0) {
+ if (pagePath.charAt(pagePath.length-1) == "/"){
+ pagePath = pagePath.substring(0, pagePath.length-1)
+ }
+ }else {
+ pagePath = "index"
+ }
+
+ // 选取浏览器默认使用的语言
+ const lang = navigator.language || navigator.userLanguage
+
+ // 若当前 mdbook 主题为 Light 或 Rust ,则将 giscuz 主题设置为 light
+ var theme = "transparent_dark";
+ const themeClass = document.getElementsByTagName("html")[0].className;
+ if (themeClass.indexOf("light") != -1 || themeClass.indexOf("rust") != -1) {
+ theme = "light"
+ }
+
+ var script = document.createElement("script")
+ script.type = "text/javascript";
+ script.src = "https://giscus.app/client.js";
+ script.async = true;
+ script.crossOrigin = "anonymous";
+ script.setAttribute("data-repo", "sunface/rust-by-practice");
+ script.setAttribute("data-repo-id", "MDEwOlJlcG9zaXRvcnkxMjk5OTAzOTY=");
+ script.setAttribute("data-category", "Book Comments");
+ script.setAttribute("data-category-id", "DIC_kwDOB79-_M4COQmx");
+ script.setAttribute("data-mapping", "specific");
+ script.setAttribute("data-term", pagePath);
+ script.setAttribute("data-reactions-enabled", "1");
+ script.setAttribute("data-emit-metadata", "0");
+ script.setAttribute("data-input-position", "top");
+ script.setAttribute("data-theme", theme);
+ script.setAttribute("data-lang", lang);
+ // 预先加载评论会更好,这样用户读到那边时,评论就加载好了
+ // script.setAttribute("data-loading", "lazy");
+ document.getElementById("giscus-container").appendChild(script);
+};
+
+window.addEventListener('load', initAll);
\ No newline at end of file
diff --git a/en/theme/index.hbs b/en/theme/index.hbs
index 69134ba..d09161f 100644
--- a/en/theme/index.hbs
+++ b/en/theme/index.hbs
@@ -54,8 +54,6 @@
{{/if}}
-
-
@@ -69,11 +67,9 @@
try {
var theme = localStorage.getItem('mdbook-theme');
var sidebar = localStorage.getItem('mdbook-sidebar');
-
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
-
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
@@ -187,7 +183,7 @@
{{{ content }}}
-
+