跳转到内容

MediaWiki talk:Gadget-hideConversionTab.css

页面内容不支持其他语言。
维基百科,自由的百科全书

編輯請求 2020-12-18

请求已处理

請將 MediaWiki:Gadget-hideConversionTab.css

li#ca-0,
li#ca-1,
li#ca-2,
li#ca-varlang-0,
li#ca-varlang-1,
li#ca-varlang-2{
    display: none;
}

修改成

#ca-varlang-0,
#ca-varlang-1,
#ca-varlang-2,
#mw-mf-language-variant-selection > li:nth-child(-n + 3)
{
    display: none !important;
}

以及請加入頁面 MediaWiki:Gadget-hideConversionTab.js

/**
 * The script used to simplify the language options for the [Minerva Neue](https://www.mediawiki.org/wiki/Skin:Minerva_Neue)
 * skin.
 * 
 * @author Jason Kwok (https://zh.wikipedia.org/wiki/User:JasonHK)
 */

// Alter this constant to hide other languages.
var HIDDEN_LANGUAGE_SELECTOR = ".zh, .zh-hans, .zh-hant";

// Check if the current skin is Minerva Neue and `MutationObserver` is available, otherwise this
// script will not be executed.
if (document.body.classList.contains("skin-minerva") && (typeof MutationObserver === "function"))
{
  var observer = new MutationObserver(
    (function(records)
    {
      // Iterate through the mutation records.
      for (var i = 0; i < records.length; i++)
      {
        var record = records[i];

        // Execute further if the record is child list mutations.
        if (record.type === "childList")
        {
          // Iterate through the added nodes.
          for (var j = 0; j < record.addedNodes.length; j++)
          {
            var addedNode = record.addedNodes[j];

            // Execute further if the node is the language searcher overlay.
            if ((addedNode instanceof Element) && addedNode.classList.contains("language-searcher"))
            {
              // Query all language options with the specified language codes.
              var selectedNodes = addedNode.querySelectorAll(HIDDEN_LANGUAGE_SELECTOR);
              for (var k = 0; k < selectedNodes.length; k++)
              {
                // Hide its parent element.
                var parentElement = selectedNodes[k].parentElement;
                if (parentElement && (parentElement instanceof HTMLElement))
                {
                  parentElement.style.display = "none";
                }
              }
            }
          }
        }
      }
    }));

  // Activate the `MutationObserver`.
  observer.observe(
    document.body,
    {
      childList: true,
      subtree: true,
    });
}

另外亦請將 MediaWiki:Gadgets-definition

* hideConversionTab[default]|hideConversionTab.css

修改成

* hideConversionTab[default|ResourceLoader|type=styles|targets=desktop,mobile]|hideConversionTab.js|hideConversionTab.css

詳情請參見 Wikipedia:互助客栈/技术#翻新「hideConversionTab」小工具。--Jason Kwok 2020年12月18日 (五) 15:36 (UTC)[回复]

@JasonHK已完成。--安忆Talk 2021年1月2日 (六) 10:39 (UTC)[回复]

翻新「hideConversionTab」小工具

下列討論已經關閉,請勿修改。如有任何意見,請至合適的討論頁進行,並不要再次編輯本討論。

在 2009 年,為了簡化繁簡轉換的標籤,中文維基百科增加了 hideConversionTab 小工具。然而,這個小工具在「Minerva」主題沒有起到任何作用。

為此,我設計了一個新版的 hideConversionTab 小工具。不過由於 CSS Selectors Level 4 仍在草案階段(無法使用 :has() pseudo-class),因此新版必須配合 JavaScript 使用。

li#ca-0,
li#ca-1,
li#ca-2,
li#ca-varlang-0,
li#ca-varlang-1,
li#ca-varlang-2,
body.skin-minerva .language-searcher .zh,
body.skin-minerva .language-searcher .zh-hans,
body.skin-minerva .language-searcher .zh-hant
{
  display: none !important;
}

以上的 CSS 樣式表並不能完全隱藏 Minerva 的那幾個繁簡轉換選項,只是在用戶禁用 JavaScript 下的折衷方案。而因為 Minerva 的轉換選項是在客戶端動態産生的,因此下面的 JavaScript 程式碼使用了 MutationObserver

if (document.body.classList.contains("skin-minerva") && (typeof MutationObserver === "function"))
{
  var observer = new MutationObserver(
    (function(records)
    {
      for (var i = 0; i < records.length; i++)
      {
        var record = records[i];
        if (record.type === "childList")
        {
          for (var j = 0; j < record.addedNodes.length; j++)
          {
            var addedNode = record.addedNodes[j];
            if ((addedNode instanceof Element) && addedNode.classList.contains("language-searcher"))
            {
              var selectedNodes = addedNode.querySelectorAll(".zh, .zh-hans, .zh-hant");
              for (var k = 0; k < selectedNodes.length; k++)
              {
                var parentElement = selectedNodes[k].parentElement;
                if (parentElement && (parentElement instanceof HTMLElement))
                {
                  parentElement.style.display = "none";
                }
              }
            }
          }
        }
      }
    }));

  observer.observe(
    document.body,
    {
      childList: true,
      subtree: true,
    });
}

--Jason Kwok 2020年12月18日 (五) 09:45 (UTC)[回复]

三个选项的顺序好像是固定的?可否直接使用.skin-minerva .site-link-list.suggested-languages li:nth-child(1), .skin-minerva .site-link-list.suggested-languages li:nth-child(2), .skin-minerva .site-link-list.suggested-languages li:nth-child(3) { display: none }?--安忆Talk 2020年12月18日 (五) 10:19 (UTC)[回复]
@AnYiLin:當然可以,只是我的方法會保險一點。--Jason Kwok 2020年12月18日 (五) 10:37 (UTC)[回复]
那我的建议是只使用CSS,我觉得更加保险一点。--安忆Talk 2020年12月18日 (五) 10:39 (UTC)[回复]
@AnYiLin:我再想了想,只用 CSS 也許的確比較好。這個是最新的設計:
#ca-varlang-0,
#ca-varlang-1,
#ca-varlang-2,
#mw-mf-language-variant-selection > li:nth-child(-n + 3),
.skin-minerva .language-searcher .suggested-languages > li:nth-child(-n + 3)
{
    display: none !important;
}
不過用這個設計 MediaWiki:Gadgets-definition 要作出相應的修改:
* hideConversionTab[default|type=styles|targets=desktop,mobile]|hideConversionTab.css
--Jason Kwok 2020年12月18日 (五) 13:16 (UTC)[回复]
确定下来的话,可以直接提出编辑请求。--安忆Talk 2020年12月18日 (五) 14:15 (UTC)[回复]
@AnYiLin:已提出編輯請求--Jason Kwok 2020年12月18日 (五) 15:41 (UTC)[回复]
JasonHK有个小问题,这里一定要 !important 吗?我看不加也能 work,并且原来的代码没加,两边没统一感觉稍微有点奇怪。但是加了应该也不会遇到什么冲突的情况。 --砜中嘌呤的白磷萃取 打谱 2020年12月19日 (六) 14:33 (UTC)[回复]
我觉得也不用加,当然加了的话也没什么影响。--安忆Talk 2020年12月19日 (六) 14:40 (UTC)[回复]
@WhitePhosphorus:有個主題不加的話沒法正常隱藏,雖然 Wikipedia 好像沒有那個主題……——Jason Kwok 2020年12月22日 (二) 18:15 (UTC)[回复]
哦刚还发现一个大问题……像衡水中学第一个会是英文维基条目,这样只取前三就会隐藏掉英文版、不转换和简体。可能在主流浏览器支持 :has() 之前还是得用 js 辅助? --砜中嘌呤的白磷萃取 打谱 2020年12月22日 (二) 14:26 (UTC)[回复]
没有复现成功…我这面看,那篇条目在minerva上的语言列表-建议的语言,前三个还是“不转换”、“简体”、“繁体”。--安忆Talk 2020年12月22日 (二) 14:40 (UTC)[回复]
看了一下建议语言的代码注释,似乎是和 Accept-Language 有关。我之前首选语言列表里一直有英文,现在把 en 去掉以后它就不再建议英文条目了。您也可以试试把 en 加进浏览器首选语言试试能否复现。反正看代码的话,这个建议语言还是会打乱顺序的吧,因为它好像设计了一套计算各语言排名先后的算法。 --砜中嘌呤的白磷萃取 打谱 2020年12月22日 (二) 15:59 (UTC)[回复]
的确…真是极为先进的皮肤呢(笑)。看来在有:has之前(我觉得到CSS5都不一定有)不得不用js了。--安忆Talk 2020年12月22日 (二) 16:19 (UTC)[回复]
我之後發現 MobileFrontend 的語言選擇必須啟用 JavaScript 才能運作,否則其實是使用 Special:移动版语言/Wikipedia:首页來切換語言的。好像用 JavaScript 也沒差(笑)?——Jason Kwok 2020年12月22日 (二) 18:10 (UTC)[回复]
据下方说明,固定样式使用:
#ca-varlang-0, #ca-varlang-1, #ca-varlang-2,
#mw-mf-language-variant-selection li:nth-child(-n + 3) {
	display: none
}
动态列表因项目顺序不固定仍需使用js。 --安忆Talk 2020年12月22日 (二) 18:16 (UTC)[回复]
延伸內容
@JasonHK:请问必须要用#mw-mf-language-variant-selection吗?我看只用.language-searcher .suggested-languages就可以在minerva上隐藏掉三个列表项了。--安忆Talk 2020年12月22日 (二) 14:47 (UTC)[回复]
还是没有发现#mw-mf-language-variant-selection的用途,以下样式在测试后暂未发现问题WhitePhosphorus
#ca-varlang-0, #ca-varlang-1, #ca-varlang-2,
.language-searcher .suggested-languages li:nth-child(-n + 3) {
	display: none
}
--安忆Talk 2020年12月22日 (二) 15:38 (UTC)[回复]
@AnYiLin:那個是在 Special:移动版语言/Wikipedia:首页用的。——Jason Kwok 2020年12月22日 (二) 18:01 (UTC)[回复]
了解了。这样看起来,除了suggested-languages需要动态加样式之外,其他的用固定的就可以。 --安忆Talk 2020年12月22日 (二) 18:16 (UTC)[回复]
@AnYiLin編輯請求已更新--Jason Kwok 2020年12月24日 (四) 08:35 (UTC)[回复]

本討論已經關閉,請勿修改。如有任何意見,請至合適的討論頁進行,並不要再次編輯本討論。