"标签,防止标签发生嵌套
+    articleContent = articleContent.replace(new RegExp('',"gi"), "")
+    articleContent = articleContent.replace(new RegExp("","gi"), "");
+    // 将文章中所有出现该单词word的地方改为:"" + word + ""。
+    for (let word of totalSet) {
+        articleContent = articleContent.replace(new RegExp("\\b" + word + "\\b", "g"), "" + word + "");
+    }
     document.getElementById("article").innerHTML = articleContent;
 }
 
 function cancelHighlighting() {
-    let articleContent = document.getElementById("article").innerText;//将原来的.innerText改为.innerHtml,原因同上
-    let pickedWords = document.getElementById("selected-words");
-    const dictionaryWords = document.getElementById("selected-words2");    
-    const list = pickedWords.value.split(" ");    
-    if (pickedWords != null) {
-        for (let i = 0; i < list.length; ++i) {
-            list[i] = list[i].replace(/(^\s*)|(\s*$)/g, "");
-            if (list[i] !== "") { //原来判断的代码中,替换的内容为“list[i]”这个字符串,这明显是错误的,我们需要替换的是list[i]里的内容
-                articleContent = articleContent.replace(new RegExp(""+list[i]+"", "g"), list[i]);
-            }
-        }
-    }
-    if (dictionaryWords != null) {
-        let list2 = pickedWords.value.split(" ");
-        for (let i = 0; i < list2.length; ++i) {
-            list2 = dictionaryWords.value.split(" ");
-            list2[i] = list2[i].replace(/(^\s*)|(\s*$)/g, "");
-            if (list2[i] !== "") { //原来代码中,替换的内容为“list[i]”这个字符串,这明显是错误的,我们需要替换的是list[i]里的内容
-                articleContent = articleContent.replace(new RegExp(""+list2[i]+"", "g"), list2[i]);
-            }
-        }
-    }
+    let articleContent = document.getElementById("article").innerHTML;
+    articleContent = articleContent.replace(new RegExp('',"gi"), "")
+    articleContent = articleContent.replace(new RegExp("","gi"), "");
     document.getElementById("article").innerHTML = articleContent;
 }
 
@@ -97,6 +81,7 @@ function toggleHighlighting() {
         isHighlight = true;
         highLight();
     }
+     localStorage.setItem('highlightChecked', isHighlight);
 }
 
-showBtnHandler();
+showBtnHandler();
\ No newline at end of file
diff --git a/app/static/js/read.js b/app/static/js/read.js
index 814f627..c28fd26 100644
--- a/app/static/js/read.js
+++ b/app/static/js/read.js
@@ -9,7 +9,7 @@ var Reader = (function() {
         msg.rate = rate;
         msg.lang = "en-US";
         msg.onboundary = ev => {
-            if (ev.name == "word") {
+            if (ev.name === "word") {
                 current_position = ev.charIndex;
             }
         }
@@ -32,4 +32,4 @@ var Reader = (function() {
         read: read,
         stopRead: stopRead
     };
-})();
+}) ();
diff --git a/app/static/js/word_operation.js b/app/static/js/word_operation.js
index f043cce..dcf38ff 100644
--- a/app/static/js/word_operation.js
+++ b/app/static/js/word_operation.js
@@ -5,15 +5,14 @@ function familiar(theWord) {
     $.ajax({
         type:"GET",
         url:"/" + username + "/" + word + "/familiar",
-        success:function(response){
+        success:function(response) {
             let new_freq = freq - 1;
             const allow_move = document.getElementById("move_dynamiclly").checked;
             if (allow_move) {
-
                 if (new_freq <= 0) {
                     removeWord(theWord);
                 } else {
-                    renderWord({ word: theWord, freq: new_freq });
+                    renderWord({word: theWord, freq: new_freq});
                 }
             } else {
                 if(new_freq <1) {
@@ -33,11 +32,11 @@ function unfamiliar(theWord) {
     $.ajax({
         type:"GET",
         url:"/" + username + "/" + word + "/unfamiliar",
-        success:function(response){
+        success:function(response) {
             let new_freq = parseInt(freq) + 1;
             const allow_move = document.getElementById("move_dynamiclly").checked;
             if (allow_move) {
-                renderWord({ word: theWord, freq: new_freq });
+                renderWord({word: theWord, freq: new_freq});
             } else {
                 $("#freq_" + theWord).text(new_freq);
             }
@@ -51,7 +50,7 @@ function delete_word(theWord) {
     $.ajax({
         type:"GET",
         url:"/" + username + "/" + word + "/del",
-        success:function(response){
+        success:function(response) {
             const allow_move = document.getElementById("move_dynamiclly").checked;
             if (allow_move) {
                 removeWord(theWord);
@@ -114,7 +113,7 @@ function removeWord(word) {
     // 根据词频信息删除元素
     word = word.replace('&', '&');
     const element_to_remove = document.getElementById(`p_${word}`);
-    if (element_to_remove != null) {
+    if (element_to_remove !== null) {
         element_to_remove.remove();
     }
 }
@@ -129,7 +128,7 @@ function renderWord(word) {
     for (const current of container.children) {
         const cur_word = parseWord(current);
         // 找到第一个词频比它小的元素,插入到这个元素前面
-        if (compareWord(cur_word, word) == -1) {
+        if (compareWord(cur_word, word) === -1) {
             container.insertBefore(new_element, current);
             inserted = true;
             break;
@@ -165,17 +164,11 @@ function elementFromString(string) {
  *  当first大于second时返回1
  */
 function compareWord(first, second) {
-    if (first.freq < second.freq) {
-        return -1;
+    if (first.freq !== second.freq) {
+        return first.freq < second.freq ? -1 : 1;
     }
-    if (first.freq > second.freq) {
-        return 1;
-    }
-    if (first.word < second.word) {
-        return -1;
-    }
-    if (first.word > second.word) {
-        return 1;
+    if (first.word !== second.word) {
+        return first.word < second.word ? -1 : 1;
     }
     return 0;
-}
+}
\ No newline at end of file
diff --git a/app/templates/login.html b/app/templates/login.html
index 2507f75..b0806b6 100644
--- a/app/templates/login.html
+++ b/app/templates/login.html
@@ -1,7 +1,7 @@
 {% block body %}
 {% if session['logged_in'] %}
 
-你已登录 {{ session['username'] }}。 登出点击这里。
+你已登录 {{ session['username'] }}。 登出点击这里。
 
 {% else %}
 
@@ -15,6 +15,10 @@
             alert('输入不能为空!');
             return false;
         }
+        if (password.includes(' ')) {
+            alert('输入不能包含空格!');
+            return false;
+        }
         $.post(
             "/login", {'username': username, 'password': password},
             function (response) {
@@ -32,14 +36,13 @@
 
 
 {% endif %}
diff --git a/app/templates/mainpage_get.html b/app/templates/mainpage_get.html
index 344943d..3ba0ece 100644
--- a/app/templates/mainpage_get.html
+++ b/app/templates/mainpage_get.html
@@ -34,9 +34,9 @@
         共有文章  {{ number_of_essays }}  篇
         粘贴1篇文章 (English only)
         
         {% if d_len > 0 %}
             最常见的词
@@ -44,6 +44,7 @@
                 {{x[0]}} {{x[1]}}
             {% endfor %}
         {% endif %}
+        Version: 20230810
         
     
     {{ yml['footer'] | safe }}
@@ -52,5 +53,22 @@
             
         {% endfor %}
     {% endif %}
+