無題 無名 ID:lsWU4N/o 2019/10/03(四) 22:10:18.317 No.16186758 // 轉換規則:第一個是支那用語,第二個是台灣用語,兩個為一組。
const rules = [
"給力", "夠力", "質量", "品質", "水平", "水準", "通關", "過關", "立馬", "馬上", "高清", "高畫質", "優化", "最佳化", "視頻", "影片", "音頻", "音檔", "屏蔽", "隱藏", "項目", "專案",
"屏幕", "螢幕", "內存", "記憶體", "軟件", "軟體", "激活", "啟用", "信息", "訊息", "網絡", "網路", "雙擊", "連點兩下", "回車", "輸入", "服務器", "伺服器", "學霸", "很會讀書的人",
"顏值", "外貌", "緩存", "快取", "加載", "讀取", "網民", "網友", "舉報", "檢舉", "硬盤", "硬碟", "U盤", "隨身碟", "卸載", "解除安裝", "妹子", "女生", "妹紙", "女生", "界面", "介面",
"網紅", "網路名人", "攝像頭", "攝影機", "神馬", "什麼", "有木有", "有沒有", "估計", "大概", "鼠標", "游標", "高端", "高階", "低端", "低階", "塑料", "塑膠", "硅", "矽", "挺好的", "很好",
"大陸", "支那", "內地", "支那", "牛逼", "厲害", "牛B", "厲害", "牛屄", "厲害", "流批", "厲害", "特牛", "特別厲害", "繁體", "正體", "繁中", "正體中文", "插件", "外掛", "程序", "程式",
"刷新", "重新整理", "計算機", "電腦", "幼兒園", "幼稚園", "網遊", "網路遊戲", "頁遊", "網頁遊戲", "手遊", "手機遊戲", "營銷", "行銷", "真心", "真的", "樓主", "原PO", "存儲", "儲存",
"互聯網", "網際網路", "花屏", "破圖", "聯繫", "聯絡", "激光", "雷射", "靠譜", "可靠", "網民", "網友", "智能", "智慧", "特好", "很好", "閨密", "好姊妹", "吃貨", "老饕", "打印", "列印",
"衛生間", "洗手間", "衛生巾", "衛生棉", "微電影", "短片", "性價比", "成本效益比", "服務員", "服務生", "方便麵", "泡麵", "公交車", "公車", "網盤", "網路空間"
];
無題 無名 ID:ReDwpqPM 2019/10/04(五) 00:09:41.954 No.16188131 >>16187426主要是把Jquery去掉,改為原生的JS。
並且調整一些寫法,泥參考看看
[aa]
(function() {
'use strict';
// 文字反白開關
/*
* 設定檔的命名通常要有一些特殊規則,後續看程式碼的時候可以一點看出。
*/
const __enableColor = true;
const __colorSelector = document.getElementById('theme-selector');
// 轉換規則:第一個是支那用語,第二個是台灣用語,兩個為一組。
const __rules = ["給力", "夠力", "質量", "品質"];
window.onload = function(){
const curentColor = getColor(__colorSelector);
setObserver(__colorSelector);
getQuote(curentColor);
if (__enableColor && !!__colorSelector) {
changeColor(__colorSelector);
}
}
function getColor(colorSelector)
{
// "!!"強制轉換為boolean判斷,驗證__modeSelected是否存在,JS的處理法。
// "||"由於這是JS的NULL特殊處理,等同!!colorSelector ? colorSelector : [];
return !!(colorSelector || {}).value
? "yellow"
: "red";
}
function setObserver(colorSelector) {
const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
const config = { attributes: true, childList: true, characterData: true };
const observer = new MutationObserver(()=>{
const curentColor = getColor(colorSelector);
getQuote(curentColor);
});
const eleNeedObserve = document.querySelectorAll(".thread");
for (let ele of (eleNeedObserve || [])) {
observer.observe(ele, config);
}
}
function getQuote(color) {
const eleNeedPolice = document.querySelectorAll(".quote:not(.police)") || [];
for(let quote of eleNeedPolice)
{
quote.innerHTML = comparison(quote.innerHTML,__rules,__enableColor,color);
quote.classList.add('police');
}
}
/*
個別function 內的盡量不要動到全域變數,盡量拉。
*/
function comparison(innerHTML,rules,enableColor,color)
{
for (let i = 0; i < rules.length; i = i + 2) {
const regex = new RegExp(rules[i],"g");
//原始資料可以偷偷放在Attr裡面保存,作為DEBUG好用,也可以用於其他擴充處理(Ex:小幫手貼紙)
const replacementString = enableColor
? `<span class='china' oriString='${rules[i]}' style='background-color:${color}'>${rules[i + 1]}</span>`
: rules[i + 1];
innerHTML = innerHTML.replace(regex, replacementString);
}
return innerHTML;
}
function changeColor(colorSelector) {
colorSelector.addEventListener("change",eventOnChange);
return 0;
//-----
/*閉包,主要是把次要條件放後面,讓主要邏輯較為清晰,習慣上我自己會切一條線做為區隔*/
function eventOnChange(e){
//不要在setTimeout中嘗試取得當前JS的method,那裏是異次元。
const color = getColor(colorSelector);
setTimeout(() => {
const eleChina = document.querySelectorAll(".china") || [];
for(let ele of eleChina){
ele.style.backgroundColor = color;
}
}
, 500);
}
}
})();
[/aa]
無題 無名 ID:ReDwpqPM 2019/10/04(五) 00:54:59.670 No.16188539
>>16188483最後一段幫泥修好惹,
噗知道泥有沒有注意到。
晚丸
[aa]
function getQuote(color) {
const eleNeedPolice = document.querySelectorAll(".quote:not(.police)") || [];
for(let quote of eleNeedPolice)
{
const qlinkOri_Associate = qlinkToAssociateArray(quote.querySelectorAll(".qlink"));
quote.innerHTML = comparison(quote.innerHTML,__rules,__enableColor,color);
quote.classList.add('police');
const qlinkAfter = quote.querySelectorAll(".qlink");
for(let qlink of qlinkAfter)
{
const dataNo = qlink.getAttribute("data-no");
const qlinkOri = qlinkOri_Associate[dataNo];
if(!!qlinkOri)
{
qlink.removeAttribute('href');
qlink.removeAttribute("class");
qlink.removeAttribute("data-no");
qlink.innerHTML = "";
qlink.appendChild(qlinkOri);
}
}
}
//----
function qlinkToAssociateArray(qlinkArray)
{
let associateArray = [];
for(let qlink of qlinkArray||[])
{
const dataNo = qlink.getAttribute("data-no");
associateArray[dataNo] = qlink;
}
return associateArray;
}
}
[/aa]