Skip to content

Commit

Permalink
调整页面切换监测逻辑
Browse files Browse the repository at this point in the history
1. 使用`pageConfig.pageChangeTrigger`代替`pageConfig.firstChangeURL`; 明确页面切换触发器类型;
2. 删除`handleUrlChange 函数`, 作用全部合并到`updatePageConfig`
3. 重置`pageChangeTrigger`逻辑, 调整到`updatePageConfig`
4. `页面切换`(包含首次载入)【Debug】输出, 调整到`updatePageConfig`
  • Loading branch information
maboloshi committed Feb 15, 2025
1 parent b1187d2 commit 3bd45de
Showing 1 changed file with 10 additions and 19 deletions.
29 changes: 10 additions & 19 deletions main.user.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,18 +86,23 @@
init();

// 更新页面设置
function updatePageConfig() {
function updatePageConfig(currentPageChangeTrigger = pageConfig.pageChangeTrigger) {
const newType = detectPageType();
if (newType && newType !== pageConfig.currentPageType) {
pageConfig = buildPageConfig(newType);
} else {
pageConfig.pageChangeTrigger = false; // 重置 pageChangeTrigger
}
console.log(`【Debug】${currentPageChangeTrigger}触发, 页面类型为 ${pageConfig.currentPageType}`);
}

// 构建页面设置 pageConfig 对象
function buildPageConfig(pageType = pageConfig.currentPageType) {
return {
// 当前页面类型
currentPageType: pageType,
// 重置 pageChangeTrigger
pageChangeTrigger: false,
// 静态词库
staticDict: {
...I18N[CONFIG.LANG].public.static,
Expand Down Expand Up @@ -132,19 +137,6 @@
* watchUpdate 函数:监视页面变化,根据变化的节点进行翻译
*/
function watchUpdate() {
// 缓存当前页面的 URL
let previousURL = window.location.href;

const handleUrlChange = () => {
const currentURL = window.location.href;
// 如果页面的 URL 发生变化
if (currentURL !== previousURL) {
previousURL = currentURL;
updatePageConfig();
pageConfig.firstChangeURL = false; // 重置 firstChangeURL
console.log(`【Debug】页面切换 pageType= ${pageConfig.currentPageType}`);
}
}

const processMutations = mutations => {
// 平铺突变记录并过滤需要处理的节点(链式操作)
Expand Down Expand Up @@ -176,7 +168,7 @@

// 监听 document.body 下 DOM 变化,用于处理节点变化
new MutationObserver(mutations => {
if (pageConfig.firstChangeURL) handleUrlChange();
if (pageConfig.pageChangeTrigger) updatePageConfig();
if (pageConfig.currentPageType) processMutations(mutations);
}).observe(document.body, CONFIG.OBSERVER_CONFIG);
}
Expand Down Expand Up @@ -635,12 +627,12 @@

// 监听 Turbo 获取响应之前事件
document.addEventListener('turbo:before-fetch-response', () => {
pageConfig.firstChangeURL = true; // 页面开始切换前设置为 true
pageConfig.pageChangeTrigger = 'Tubo 驱动';
});

// 监听浏览器 history 切换
window.addEventListener('popstate', () => {
pageConfig.firstChangeURL = true; // 页面开始切换前设置为 true
pageConfig.pageChangeTrigger = '浏览器导航';
});

// 监听 Turbo 完成事件(延迟翻译)
Expand All @@ -664,8 +656,7 @@
// 首次页面翻译
document.addEventListener('DOMContentLoaded', () => {
// 获取当前页面的翻译规则
updatePageConfig();
console.log(`【Debug】开始 pageType= ${pageConfig.currentPageType}`);
updatePageConfig('首次载入');
if (pageConfig.currentPageType) traverseNode(document.body);
});
}
Expand Down

0 comments on commit 3bd45de

Please sign in to comment.