2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

User:机智的小鱼君/gadget/Waline.js

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳转到导航 跳转到搜索

注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox/Safari:按住“Shift”的同时单击“刷新”,或按“Ctrl-F5”或“Ctrl-R”(Mac为“⌘-R”)
  • Google Chrome:按“Ctrl-Shift-R”(Mac为“⌘-Shift-R”)
  • Internet Explorer:按住“Ctrl”的同时单击“刷新”,或按“Ctrl-F5”
  • Opera:在“工具→首选项”中清除缓存
如果您已登录但该页面出现未登录状态,请尝试在地址栏的地址最后添加代码?_=1来访问最新页面。
添加代码后的本页地址如下:-{R|https://moegirl.icu/User:%E6%9C%BA%E6%99%BA%E7%9A%84%E5%B0%8F%E9%B1%BC%E5%90%9B/gadget/Waline.js?_=1}-
mw.hook('wikipage.content').add(($content) =>
  (async () => {
    const parent = $content.get(0)
    const conf = mw.config.values

    // filter
    if (!conf.wgIsArticle || !conf.wgArticleId) {
      return
    }

    // main
    const Waline = await importWaline()
    const container = document.createElement('div')
    container.id = 'moegirl-comment'
    parent.insertAdjacentElement('afterend', container)

    Waline.init({
      el: container,
      serverURL: 'https://moegirl-waline.epb.wiki',
      wordLimit: 233,
      login: 'force',
      path: `${conf.wgDBname}-${conf.wgArticleId}`,
    })

    // utils
    async function importWaline() {
      if (window.Waline) {
        return window.Waline
      }
      return Promise.all([
        loadScript('https://unpkg.com/@waline/client@2/dist/waline.js'),
        loadStyle('https://unpkg.com/@waline/client@2/dist/waline.css'),
      ]).then(() => {
        return window.Waline
      })
    }

    async function loadScript(src = '') {
      return new Promise((resolve, reject) => {
        const script = document.createElement('script')
        script.src = src
        script.onload = resolve
        script.onerror = reject
        document.body.appendChild(script)
      })
    }
    async function loadStyle(href = '') {
      return new Promise((resolve, reject) => {
        const link = document.createElement('link')
        link.href = href
        link.rel = 'stylesheet'
        link.onload = resolve
        link.onerror = reject
        document.head.appendChild(link)
      })
    }
  })()
)