当使用特定哈希调用 URL 时展开详细信息元素

Expand details element when URL is called with specific hashes

我已使用 detailssummary 元素折叠页面的一部分。

<details id="comments">
  <summary>Show comments</summary>
  <ol>
   <li id-"comment-101">This</li>
   <li id-"comment-102">is</li>
   <li id-"comment-103">cool</li>
  </ol>
</details>

我还添加了此 Javascript 代码以在使用 #comments 散列调用 URL 时自动扩展该部分:

function openTarget() {
  var hash = location.hash.substring(1);
  if(hash) var details = document.getElementById(hash);
  if(details && details.tagName.toLowerCase() === 'details') details.open = true;
}
window.addEventListener('hashchange', openTarget);
openTarget();

当使用 Javascript(没有 jQuery)通过任何 #comment-X 哈希调用 URL 时,如何扩展 details#comments?理想情况下,页面也会滚动到元素 #comment-X 所在的位置。

这是一个放宽哈希检查的问题,不仅允许 "comments",还允许 "comment-111"。正如您的 HTML 所建议的那样,我假设您的 ID 是数字。

//grab hash and its parts
let hash = location.hash.match(/^#(comment(s|-(\d+)))$/);
if (hash) {

    //resolve to element
    let el = document.getElementById(hash[1]);
    if (el) {

        //open comments - not sure what your .open property does
        el.closest('#comments').open = true;

        //if is hash to specific comment, go to it
        if (hash[3]) location.href = '#'+hash[3];
    }
}