MediaWiki talk:Gadget-hideConversionTab.css
Jimmy-bot在话题“翻新「hideConversionTab」小工具”中的最新留言:3年前
編輯請求 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)
翻新「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 要作出相應的修改:
- --Jason Kwok 2020年12月18日 (五) 13:16 (UTC)
* hideConversionTab[default|type=styles|targets=desktop,mobile]|hideConversionTab.css
- 确定下来的话,可以直接提出编辑请求。--安忆Talk 2020年12月18日 (五) 14:15 (UTC)
- 那我的建议是只使用CSS,我觉得更加保险一点。--安忆Talk 2020年12月18日 (五) 10:39 (UTC)
- @AnYiLin:當然可以,只是我的方法會保險一點。--Jason Kwok 2020年12月18日 (五) 10:37 (UTC)
- 白磷萃取 打谱 2020年12月19日 (六) 14:33 (UTC)
- 我觉得也不用加,当然加了的话也没什么影响。--安忆Talk 2020年12月19日 (六) 14:40 (UTC)
有个小问题,这里一定要 !important 吗?我看不加也能 work,并且原来的代码没加,两边没统一感觉稍微有点奇怪。但是加了应该也不会遇到什么冲突的情况。 --砜中嘌呤的
- @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)
- 的确…真是
- 看了一下建议语言的代码注释,似乎是和 Accept-Language 有关。我之前首选语言列表里一直有英文,现在把 en 去掉以后它就不再建议英文条目了。您也可以试试把 en 加进浏览器首选语言试试能否复现。反正看代码的话,这个建议语言还是会打乱顺序的吧,因为它好像设计了一套计算各语言排名先后的算法。 --砜中嘌呤的白磷萃取 打谱 2020年12月22日 (二) 15:59 (UTC)
- 没有复现成功…我这面看,那篇条目在minerva上的语言列表-建议的语言,前三个还是“不转换”、“简体”、“繁体”。--安忆Talk 2020年12月22日 (二) 14:40 (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)
- 据下方说明,固定样式使用:
- 我之後發現 MobileFrontend 的語言選擇必須啟用 JavaScript 才能運作,否則其實是使用 Special:移动版语言/Wikipedia:首页來切換語言的。好像用 JavaScript 也沒差(笑)?——Jason Kwok 2020年12月22日 (二) 18:10 (UTC)
延伸內容 |
---|
|
- 本討論已經關閉,請勿修改。如有任何意見,請至合適的討論頁進行,並不要再次編輯本討論。