OSDN Git Service

BugTrack/2490 search2 plugin: Only li element allowed as ul child
authorumorigu <umorigu@gmail.com>
Thu, 15 Aug 2019 17:48:47 +0000 (02:48 +0900)
committerumorigu <umorigu@gmail.com>
Thu, 15 Aug 2019 17:48:47 +0000 (02:48 +0900)
plugin/search2.inc.php
skin/search2.js

index 6379d21..c6bc826 100644 (file)
@@ -352,10 +352,10 @@ EOD;
  <p>$_msg_unsupported_webbrowser $alt_msg</p>
 </noscript>
 <style>
-input#_plugin_search2_detail:checked ~ ul > div.search-result-detail {
+input#_plugin_search2_detail:checked ~ ul > li > div.search-result-detail {
   display:block;
 }
-input#_plugin_search2_detail ~ ul > div.search-result-detail {
+input#_plugin_search2_detail ~ ul > li > div.search-result-detail {
   display:none;
 }
 ._plugin_search2_search_status {
index 14cbed2..d3e35f1 100644 (file)
@@ -654,15 +654,14 @@ window.addEventListener && window.addEventListener('DOMContentLoaded', function(
      * @param {Array<Object>} results
      * @param {string} searchText
      * @param {RegExp} searchRegex
-     * @param {Element} parentElement
+     * @param {Element} parentUlElement
      * @param {boolean} insertTop
      */
-    function addSearchResult(results, searchText, searchRegex, parentElement, insertTop) {
+    function addSearchResult(results, searchText, searchRegex, parentUlElement, insertTop) {
       var props = getSiteProps();
       var now = new Date();
       var parentFragment = document.createDocumentFragment();
       results.forEach(function(val) {
-        var fragment = document.createDocumentFragment();
         var li = document.createElement('li');
         var hash = '#q=' + encodeSearchTextForHash(searchText);
         var href = val.url + hash;
@@ -679,7 +678,7 @@ window.addEventListener && window.addEventListener('DOMContentLoaded', function(
           decoratedName + '</a>' + passageHtml;
         li.innerHTML = liHtml;
         li.setAttribute('data-pagename', val.name);
-        fragment.appendChild(li);
+        // Page detail div
         var div = document.createElement('div');
         div.classList.add('search-result-detail');
         var head = document.createElement('div');
@@ -693,13 +692,14 @@ window.addEventListener && window.addEventListener('DOMContentLoaded', function(
           div.appendChild(pre);
         }
         div.setAttribute('data-pagename', val.name);
-        fragment.appendChild(div);
-        parentFragment.appendChild(fragment);
+        // Add li to ul (parentUlElement)
+        li.appendChild(div);
+        parentFragment.appendChild(li);
       });
-      if (insertTop && parentElement.firstChild) {
-        parentElement.insertBefore(parentFragment, parentElement.firstChild);
+      if (insertTop && parentUlElement.firstChild) {
+        parentUlElement.insertBefore(parentFragment, parentUlElement.firstChild);
       } else {
-        parentElement.appendChild(parentFragment);
+        parentUlElement.appendChild(parentFragment);
       }
     }
     function removeCachedResultsBase(keepTodayCache) {