From ef6c4d64d354c3250e372c165cd0d50a61e149da Mon Sep 17 00:00:00 2001 From: ken Date: Tue, 21 Jul 2026 16:08:46 +0800 Subject: [PATCH] js --- assets/javascripts/app.js | 61 ++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/assets/javascripts/app.js b/assets/javascripts/app.js index b4d613e..dc174ac 100644 --- a/assets/javascripts/app.js +++ b/assets/javascripts/app.js @@ -12,7 +12,7 @@ }); function handleNavMove() { - var windowWidth = window.innerWidth; + var windowWidth = window.innerWidth;ㄑ if (windowWidth > 768) { if ($signLanguageBox.length && $signLanguageBox.find('[accesskey="U"], [accesskey="W"]').length === 0) { @@ -630,7 +630,7 @@ } }); if (document.documentElement.lang === 'zh_tw') { - document.documentElement.lang = 'zh-Hant'; + document.documentElement.lang = 'zh-Hant-TW'; } //tab鍵按下 $(document).on('keydown', function(e) { @@ -924,15 +924,6 @@ // 有連結目的之所有a標籤的無障礙處理 $(function() { - // Bootstrap 會把原始 title 搬到 data-bs-original-title,先還原回來 - $('a[data-bs-original-title]').each(function() { - var $a = $(this); - var originalTitle = $a.attr('data-bs-original-title'); - if (originalTitle && originalTitle.trim() !== '') { - $a.attr('title', originalTitle); - } - }); - /** * 全站無障礙 AA 級補強 (整合 HM1240400C 與 HM1240401C 規範) */ @@ -946,7 +937,7 @@ $(function() { //├─ 文字是路徑/空 → 補隱藏 span //├─ 圖片+文字共存 → 圖片 alt 清空 //├─ 無 title → 自動產出 title - //├─ 有 title 但與連結文字或圖片 alt 重複 → 只保留開窗提示 + //├─ 有 title 但與連結文字重複 → 只保留開窗提示 //├─ 有 title 出現空括號 () → 清除並補上正確開窗提示 //└─ 移除 aria-label var urlParams = new URLSearchParams(window.location.search); @@ -992,9 +983,6 @@ $(function() { var $img = $a.find('img'); var $icons = $a.find('i, svg'); var currentTitle = ($a.attr('title') || '').trim(); - - // ✅ 在 D 區塊清空 alt 之前,先記錄圖片原始 alt - var imgAltOriginal = $img.length > 0 ? ($img.attr('alt') || '').trim() : ''; // --- 【修正 1:隱藏空連結】 --- if (!isEditMode && linkText === "" && $img.length === 0 && $icons.length === 0) { @@ -1112,10 +1100,13 @@ $(function() { .replace('另開新視窗', '') .trim(); - // ✅ title 去掉開窗字串後,若與連結文字或圖片原始 alt 相同,則只保留開窗提示 + // ✅ 取得圖片原始 alt(D 區塊清空前的值) + var imgAltOriginal = $img.length > 0 ? ($img.data('originalAlt') || $img.attr('alt') || '').trim() : ''; + + // ✅ 修正:title 去掉開窗字串後,若與連結文字或圖片 alt 相同,則只保留開窗提示 if ( (titleWithoutWindow === linkText && linkText !== i18n.link) || - (imgAltOriginal !== '' && titleWithoutWindow === imgAltOriginal) + (imgAltOriginal !== '' && titleWithoutWindow === imgAltOriginal) // ✅ 新增:與圖片 alt 重複也觸發 ) { $a.attr('title', windowTask); } @@ -1131,29 +1122,12 @@ $(function() { // F. 最終清理:移除冗餘 label,避免螢幕閱讀器唸兩次 $a.removeAttr('aria-label'); }); - - // ✅ G. 補強特定連結(須在迴圈外,因為 javascript: 連結被迴圈跳過) - $('.btn-o a').each(function() { - var $a = $(this); - if (!$a.attr('target')) { - $a.attr('target', '_blank'); - $a.attr('rel', 'noopener noreferrer'); - } - $a.attr('title', isEn ? 'Share to X Open in new window' : '分享至 X 在新視窗開啟'); - }); - - $('.print-button a').each(function() { - var $a = $(this); - if (!$a.attr('title') || $a.attr('title').trim().toLowerCase() === 'print') { - $a.attr('title', isEn ? 'Print this page' : '列印此頁'); - } - }); - $('a.i-archive__file-name').each(function () { var $a = $(this); var isNewWindow = ($a.attr('target') === '_blank'); $a.attr('title', isNewWindow ? i18n.newWin : i18n.selfWin); }); + } // ✅ 延遲 800ms 確保所有其他 function 執行完畢後才處理 @@ -1162,7 +1136,22 @@ $(function() { }, 800); }); - + // if (location.href.search('editmode=on') === -1) { + // // 1. 處理圖片 alt 重複問題 (保持原邏輯但優化) + // $('a').has('img').each(function () { + // const $link = $(this); + // const linkText = $link.text().trim(); + + // $link.find('img').each(function () { + // const $img = $(this); + // const altText = $img.attr('alt')?.trim(); + + // if (altText && altText === linkText) { + // $img.attr('alt', ''); + // } + // }); + // }); + // } $(function() { function smartFixIcons() { var isEn = $('html').attr('lang') === 'en';