【问题标题】:How to automatically create local href links?如何自动创建本地href链接?
【发布时间】:2020-01-27 07:13:46
【问题描述】:

我有一个 MediaWiki 1.33.0 网站,其中一些文章包含脚注。我的问题是这些脚注没有本地链接(没有从脚注编号到“脚注”或“参考”章节的链接)。

我通过以下 Wiki 语法 模板和相应的 JavaScript 代码块创建文章脚注:

1。脚注模板

<includeonly><ol id="footnotes_list"></ol></includeonly><noinclude>

[[קטגוריה:תבניות]]
</noinclude>

2。脚注模板

<includeonly><span dir="rtl" class="footnote"><sup class="footnote_inner">{{{1}}}</sup></span></includeonly><noinclude>

[[קטגוריה:תבניות]]
</noinclude>

3。对应的JavaScript

const list = document.querySelector("#footnotes_list");
document.querySelectorAll(".footnote>sup").forEach((footnote, i) => {
    const li = document.createElement("li");
    li.append(...footnote.childNodes); // move content
    list.appendChild(li);
    footnote.textContent = i+1;
});

Credit for user:trincot for developing that code;


脚注文章示例:

תוכן{{הערה|תוכן ההערה}}

==Footnotes Chapter==
{{הערות שוליים}}

我的文章

1תוכן

脚注章节

  1. תוכן ההערה

上述三个代码块的PHP执行允许这样的脚注解析和渲染。


我的问题

由上述代码创建的脚注不包含本地 href 属性,因此脚注编号不可点击(就像它们在英文维基百科中一样)。

我希望脚注编号是可点击的,并且点击它们会引导用户找到相应的脚注。

注意

手动创建本地 href 链接我会执行以下操作(单击 X 导致 Y)但我不知道如何自动创建此链接

<a href="#my_manual_href">X</a>

<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

<h2 id="my_manual_href">Y</h2>

我的问题

如何自动创建本地href链接?

【问题讨论】:

  • 如果某个 JavaScript 忍者同意在推特上发布这个 --- 哇,那我会很高兴的!

标签: javascript client href dom-events mediawiki


【解决方案1】:

一个选项是给每个 li 项目一个 id,如下所示:

const list = document.querySelector("#footnotes_list");
document.querySelectorAll(".footnote>sup").forEach((footnote, i) => {
    const li = document.createElement("li");
    li.id = `footnote-${i}`
    li.append(...footnote.childNodes); // move content
    list.appendChild(li);
    footnote.textContent = i+1;
});

然后将 href 属性添加到文章中的“[1]”元素

假设您通过代码插入脚注链接,添加href 属性可能如下所示:

document.querySelectorAll(".footnote-link").forEach((element, i) => {
    element.href = `#footnote-${i}`;
});

【讨论】:

  • 您好 Sophia,谢谢您,我已经更新了问题,其中包含文章核心内容的示例,其中包含带脚注的文本和脚注章节。请查看我的问题中的Example 章节;虽然是希伯来语,但除了RTL方式外,模式与英文wiki相同。
  • 您好@ShadowyShade,感谢您添加示例。但是,我仍然缺少一些重要信息。您展示了您的输入以及文章最终的外观(黄色框),但我缺少将您的输入转换为文章的模板或代码,如黄色框所示。例如,文章标题为“我的文章”并包含“[1]”字符,但我没有看到插入这些文本的模板或代码。
  • 据我了解,在解析和渲染包含תוכן{{הערה|תוכן ההערה}}的网页时,1. Footnotes template2. Footnote template3. Corresponding JavaScript一起PHP执行原因 תוכן ההערה 到但转移到Footnotes chapter 并替换为文章正文区域中的[1](即Footnotes chapter 上方的所有文本)。
  • @ShadowyShade 你可能有你描述的 php 代码吗?因为1. Footnotes template2. Footnote template 不包含php,只包含html。
  • Sophia, 2. Footnote template 还包含{{{1}}} wiki 语法,它允许使用一个或多个参数进行模板调用(例如{{הערה|תוכן ההערה}})。除此之外,我从未为此研究过 MediaWiki PHP 源代码 → 我猜我只是在 2010 年左右使用此功能。
猜你喜欢
  • 2019-07-19
  • 1970-01-01
  • 2016-11-10
  • 2017-02-01
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
相关资源
最近更新 更多