Слияние кода завершено, страница обновится автоматически
window.FO = {};
window.FO.config = {
// 扫描类型
scanType:['div','span','p'],
// 每次翻译的文本最大字符长度
MAX_LENGTH:2000,
// 分隔符
DELIMITER:"!!!",
NODE_TYPE_TEXT:3,
NODE_TYPE_ELEMENT:1,
NODE_TYPE_ATTRIBUTE:2
};
window.FO.nodeList = [];
window.FO.srcTextArray = [];
window.FO.tgtTextArray = [];
/**
* 扫描
*/
window.FO.scan = function () {
let body = document.getElementsByTagName('body')[0];
window.FO.bfs(body);
}
window.FO.bfs = function (elememt) {
let childNodes = elememt.childNodes;
if (childNodes.length===0){
return;
}
for (let i=0;i<childNodes.length;i++){
if (childNodes[i].nodeType===1){
window.FO.bfs(childNodes[i]);
}else if (childNodes[i].nodeType===3) {
childNodes[i].nodeValue = childNodes[i].nodeValue.trim();
if (childNodes[i].nodeValue.length===0) continue;
window.FO.nodeList.push(childNodes[i]);
}
}
}
/**
* 对扫描到的所有Element,取出它们的firstChild.nodeValue.
* 拼装出尽可能打的但不超过最大长度的需要翻译的文本。
* 存在 srcTextArray 中
* 拼装时使用分割符 window.FO.config.DELIMITER
*/
window.FO.assemble = function(){
let temp = [];
let nodeValue ;
for(let i=0;i<window.FO.nodeList.length;i++){
let nodeValue = window.FO.nodeList[i].nodeValue;
// 如果单个Element.firstChild.nodeValue的长度就大于MAX_LENGTH
if (nodeValue.length>window.FO.config.MAX_LENGTH){
// 把之前的给存进去
if (temp.length!==0){ // 考虑第一个元素就超标的情况
window.FO.srcTextArray.push(temp.join(window.FO.config.DELIMITER));
temp = [];
}
window.FO.srcTextArray.push(nodeValue);
continue;
}
temp.push(nodeValue);
if (temp.join("").length>window.FO.config.MAX_LENGTH){
temp.pop();
window.FO.srcTextArray.push(temp.join(window.FO.config.DELIMITER));
temp = [];
i--;
}else if (i===window.FO.nodeList.length-1){
window.FO.srcTextArray.push(temp.join(window.FO.config.DELIMITER));
}
}
}
/**
* 翻译
*/
window.FO.translate = function (){
}
/**
* 替换
*/
window.FO.replace = function () {
for(let i=0;i<window.FO.nodeList.length;){
let tgtText = "*";
window.FO.nodeList[i].nodeValue = tgtText;
i++;
}
}
window.FO.scan();
window.FO.assemble();
window.FO.translate();
window.FO.replace();
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )