From e71348c820ded86d96dd24a2f50ceb529256d443 Mon Sep 17 00:00:00 2001 From: ken Date: Tue, 23 Jun 2026 11:38:13 +0800 Subject: [PATCH] freego --- assets/javascripts/app.js | 164 ++++++++++++------ .../stylesheets/template/base/_accesskey.scss | 4 +- .../template/modules/web_resource.scss | 11 +- assets/stylesheets/template/template.scss | 5 +- .../stylesheets/template/widget/sitemenu.scss | 3 +- 5 files changed, 125 insertions(+), 62 deletions(-) diff --git a/assets/javascripts/app.js b/assets/javascripts/app.js index 7f58168..22d5fda 100644 --- a/assets/javascripts/app.js +++ b/assets/javascripts/app.js @@ -1189,61 +1189,103 @@ }); $(function() { - function smartFixIcons() { - $('i').each(function() { - var $icon = $(this); - var $parent = $icon.parent(); +function smartFixIcons() { + $('i').each(function() { + var $icon = $(this); + var $parent = $icon.parent(); - // 1. 基本安全:所有圖示先對螢幕閱讀器隱藏 (避免讀出 Unicode 亂碼) - $icon.attr('aria-hidden', 'true'); + // 1. 所有圖示先對螢幕閱讀器隱藏 + $icon.attr('aria-hidden', 'true'); - // 2. 檢查:如果已經有 aria-label 或旁邊已有 sr-only,就不重複處理 - if ($icon.attr('aria-label') || $icon.next('.sr-only').length > 0 || $parent.find('.sr-only').length > 0) { - return; - } - - var cls = ($icon.attr('class') || '').toLowerCase(); - var labelText = ''; - - // --- 策略 A:常見資訊型圖示 (自動識別內容意義) --- - if (cls.includes('calendar')) labelText = '日期:'; - else if (cls.includes('user') || cls.includes('male')) labelText = '發布者:'; - else if (cls.includes('tag')) labelText = '標籤:'; - else if (cls.includes('clock') || cls.includes('time')) labelText = '時間:'; - else if (cls.includes('map-marker') || cls.includes('location')) labelText = '地點:'; - else if (cls.includes('phone')) labelText = '電話:'; - else if (cls.includes('envelope') || cls.includes('mail')) labelText = '信箱:'; - else if (cls.includes('folder')) labelText = '分類:'; - else if (cls.includes('eye')) labelText = '瀏覽次數:'; - else if (cls.includes('download')) labelText = '下載檔案:'; - - // --- 策略 B:功能性按鈕 (如果 i 放在