MediaWiki討論:Gadget-hideConversionTab.css
新增話題外觀
由Jimmy-bot在話題翻新「hideConversionTab」小工具上作出的最新留言:4 年前
編輯請求 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)
延伸內容 |
---|
|
- 本討論已經關閉,請勿修改。如有任何意見,請至合適的討論頁進行,並不要再次編輯本討論。