Reformat Post Permalinks - deltaruneboards.net

Turns "Posted on:" links in post headers into normal working permalinks. 2025-11-22

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Reformat Post Permalinks - deltaruneboards.net
// @namespace    https://greasyfork.org/en/users/766248-snarp
// @version      0.5
// @description  Turns "Posted on:" links in post headers into normal working permalinks. 2025-11-22
// @author       snarp
// @match        https://deltaruneboards.net/*
// ==/UserScript==

/*

This userscript reformats post permalinks to look like this:

    <a title="Permalink" href="#entry92157" style="text-decoration:underline">Posted on:</a>

By default, they look like this:

    <a title="" href="#" onclick="link_to_post(92157); return false;" style="text-decoration:underline">Posted on:</a>

Clicking one does not set the browser URL to a working permalink URL. It 
instead opens a dialog allowing the user to manually copy a URL in this format:

    https://deltaruneboards.net/index.php?showtopic=2938&view=findpost&p=92157

Which, when entered into the browser address bar, will redirect to:

    https://deltaruneboards.net/index.php?showtopic=2938&st=90&#entry92157

This is unexpected behavior that makes acquiring the permalink more 
time-consuming than using built-in browser methods (right-clicking and 
selecting 'Copy link' or left-clicking and copying from the browser address 
bar).

*/

(function() {
  'use strict';

  function reformatPostPermalinks() {
    for (const pdiv of document.querySelectorAll("div.post-normal")) {
      // post ID is stored in a node directly before the post div: `<a name="entry92157"></a>`
      let pid = pdiv.previousElementSibling.getAttribute('name');
      let plink = pdiv.querySelector('span.postdetails a');
      plink.setAttribute('href', '#'+pid);
      plink.setAttribute('title', 'Permalink');
      plink.removeAttribute('onclick');
    }
  }

  reformatPostPermalinks();

})();