This commit is contained in:
ken 2026-08-07 10:12:36 +08:00
parent 3ba5edeb72
commit 5cc38aee0a
10 changed files with 57 additions and 52 deletions

View File

@ -1130,56 +1130,59 @@ $(function() {
} }
} }
// E. 重新計算標題 (關鍵邏輯:若 hasOriginalTitle 為真,則不進入此區塊) // E. 重新計算標題 (關鍵邏輯:若 hasOriginalTitle 為真,則不進入此區塊)
if (!hasOriginalTitle) { if (!hasOriginalTitle) {
if (linkText === "" && $img.length > 0) { if (linkText === "" && $img.length > 0) {
var rawAlt = ($img.attr('alt') || '').trim(); var rawAlt = ($img.attr('alt') || '').trim();
var forbidden = ['這是一張圖片', '圖片', 'image', 'photo', '圖', '']; var forbidden = ['這是一張圖片', '圖片', 'image', 'photo', '圖', ''];
var imgAlt = forbidden.some(function(txt) { return rawAlt.toLowerCase() === txt; }) var imgAlt = forbidden.some(function(txt) { return rawAlt.toLowerCase() === txt; })
? ($a.attr('aria-label') || i18n.link) : rawAlt; ? ($a.attr('aria-label') || i18n.link) : rawAlt;
var fileInfo = fileExt ? '[' + fileExt.toUpperCase() + '] ' : ''; var fileInfo = fileExt ? '[' + fileExt.toUpperCase() + '] ' : '';
$a.attr('title', (fileInfo + imgAlt + " " + windowTask).trim()); $a.attr('title', (fileInfo + imgAlt + " " + windowTask).trim());
$img.attr('alt', imgAlt); $img.attr('alt', imgAlt);
} }
else if (linkText !== "") { else if (linkText !== "") {
if (fileExt !== "" || hasBadSymbol || currentTitle === "" || currentTitle.includes('/uploads/')) { if (fileExt !== "" || hasBadSymbol || currentTitle === "" || currentTitle.includes('/uploads/')) {
if (fileExt !== "") { if (fileExt !== "") {
$a.attr('title', linkText + " ." + fileExt + " " + windowTask); $a.attr('title', linkText + " ." + fileExt + " " + windowTask);
} else { } else {
$a.attr('title', windowTask); $a.attr('title', windowTask);
}
} }
} }
} }
}
// ✅ 符合 HM1240404E:title 不應與連結文字或圖片 alt 重複 // ✅ 符合 HM1240404E:title 不應與連結文字或圖片 alt 重複
if (hasOriginalTitle && currentTitle !== "") { if (hasOriginalTitle && currentTitle !== "") {
var titleWithoutWindow = currentTitle var titleWithoutWindow = currentTitle
.replace('(在本視窗開啟)', '') .replace('(在本視窗開啟)', '')
.replace('(在新視窗開啟)', '') .replace('(在新視窗開啟)', '')
.replace('Open in this window', '') .replace('Open in this window', '')
.replace('Open in new window', '') .replace('Open in new window', '')
.replace('另開新視窗前往', '') .replace('另開新視窗前往', '')
.replace('另開新視窗', '') .replace('另開新視窗', '')
.trim(); .trim();
// ✅ title 去掉開窗字串後,若與連結文字或圖片原始 alt 相同,則只保留開窗提示 // ✅ title 去掉開窗字串後,若與連結文字或圖片原始 alt 相同,則只保留開窗提示
if ( // ✅ 新增:若 linkText 包含副檔名且 title 也是同樣檔名,也只保留開窗提示
(titleWithoutWindow === linkText && linkText !== i18n.link) || if (
(imgAltOriginal !== '' && titleWithoutWindow === imgAltOriginal) (titleWithoutWindow === linkText && linkText !== i18n.link) ||
) { (imgAltOriginal !== '' && titleWithoutWindow === imgAltOriginal) ||
$a.attr('title', windowTask); (fileExt !== '' && linkText.toLowerCase().endsWith('.' + fileExt) && titleWithoutWindow === linkText)
} ) {
$a.attr('title', windowTask);
// ✅ 最終清理:若 title 出現空括號 () 則移除並補上正確開窗提示 return; // ✅ 加上 return,避免繼續執行後面的清理邏輯造成二次污染
var finalTitle = ($a.attr('title') || '').trim();
if (finalTitle.includes('()')) {
finalTitle = finalTitle.replace(/\(\)/g, '').trim();
$a.attr('title', finalTitle + ' ' + windowTask);
}
} }
// ✅ 最終清理:若 title 出現空括號 () 則移除並補上正確開窗提示
var finalTitle = ($a.attr('title') || '').trim();
if (finalTitle.includes('()')) {
finalTitle = finalTitle.replace(/\(\)/g, '').trim();
$a.attr('title', finalTitle + ' ' + windowTask);
}
}
// F. 最終清理:移除冗餘 label,避免螢幕閱讀器唸兩次 // F. 最終清理:移除冗餘 label,避免螢幕閱讀器唸兩次
$a.removeAttr('aria-label'); $a.removeAttr('aria-label');
}); });

View File

@ -8,6 +8,9 @@
// Announcement widget // Announcement widget
// ## Gerneral styles for widgets // ## Gerneral styles for widgets
td.i-annc__postdate {
min-width: 7em;
}
strong.carousel__description{ strong.carousel__description{
color: #333!important; color: #333!important;
} }

View File

@ -18,8 +18,7 @@
<div class="panel-body"> <div class="panel-body">
<ul class="i-archive-files-list" data-list="files" data-level="2"> <ul class="i-archive-files-list" data-list="files" data-level="2">
<li> <li>
<a href="{{file-url}}" class="i-archive-files-item" target="{{target}}" title="{{file-name}}">{{file-name}}</a> <a href="{{file-url}}" class="i-archive-files-item" target="{{target}}" title="{{file-name}}">{{file-name}}<span class="label label-primary {{file-type}}">{{file-type}}</span></a>
<span class="label label-primary {{file-type}}">{{file-type}}</span>
</li> </li>
</ul> </ul>
</div> </div>

View File

@ -6,7 +6,7 @@
<li class="widget-content"> <li class="widget-content">
<div class="link-img-wrap{{display_image}}"> <div class="link-img-wrap{{display_image}}">
<a href="{{link_to_show}}" target="{{target}}" title="{{img_description}}"> <a href="{{link_to_show}}" target="{{target}}" title="{{img_description}}">
<img src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}"> <img src="{{img_src}}" alt="{{img_description}}">
</a> </a>
</div> </div>
<a href="{{link_to_show}}" target="{{target}}" title="{{title_text}}">{{title}}</a> <a href="{{link_to_show}}" target="{{target}}" title="{{title_text}}">{{title}}</a>

View File

@ -7,7 +7,7 @@
<div class="link-img-wrap{{display_image}}"> <div class="link-img-wrap{{display_image}}">
<a href="{{link_to_show}}" target="{{target}}" title="{{img_description}}"> <a href="{{link_to_show}}" target="{{target}}" title="{{img_description}}">
<img src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}"> <img src="{{img_src}}" alt="{{img_description}}">
</a> </a>
</div> </div>
<div class="widget-content-title"> <div class="widget-content-title">

View File

@ -6,7 +6,7 @@
<li class="widget-content widget-content-horizontal "> <li class="widget-content widget-content-horizontal ">
<a href="{{link_to_show}}" target="{{target}}" title="{{title_text}}"> <a href="{{link_to_show}}" target="{{target}}" title="{{title_text}}">
<div class="link-img-wrap{{display_image}}"> <div class="link-img-wrap{{display_image}}">
<img src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}"> <img src="{{img_src}}" alt="{{img_description}}">
</div> </div>
</a> </a>
<div class="widget-content-title"> <div class="widget-content-title">

View File

@ -6,7 +6,7 @@
<li class="widget-content widget-content-horizontal col-sm-6"> <li class="widget-content widget-content-horizontal col-sm-6">
<a href="{{link_to_show}}" target="{{target}}" title="{{title_text}}"> <a href="{{link_to_show}}" target="{{target}}" title="{{title_text}}">
<div class="link-img-wrap{{display_image}}"> <div class="link-img-wrap{{display_image}}">
<img src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}"> <img src="{{img_src}}" alt="{{img_description}}">
</div> </div>
<div class="widget-content-title"> <div class="widget-content-title">
<a class="" href="{{link_to_show}}" target="{{target}}" title="{{title_text}}">{{title}}</a> <a class="" href="{{link_to_show}}" target="{{target}}" title="{{title_text}}">{{title}}</a>

View File

@ -7,7 +7,7 @@
<div class="hex-border"> <div class="hex-border">
<a href="{{link_to_show}}" target="{{target}}" title="{{title_text}}"> <a href="{{link_to_show}}" target="{{target}}" title="{{title_text}}">
<div class="link-img-wrap{{display_image}}"> <div class="link-img-wrap{{display_image}}">
<img src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}"> <img src="{{img_src}}" alt="{{img_description}}">
</div> </div>
<a class="widget-content-title" href="{{link_to_show}}" target="{{target}}" title="{{title_text}}" onclick="{{onclick}}">{{title}}</a> <a class="widget-content-title" href="{{link_to_show}}" target="{{target}}" title="{{title_text}}" onclick="{{onclick}}">{{title}}</a>
<span data-list="statuses" data-level="1"> <span data-list="statuses" data-level="1">

View File

@ -6,7 +6,7 @@
<li class="index-content"> <li class="index-content">
<a class="index-content-title" href="{{link_to_show}}" target="{{target}}" title="{{title_text}}"> <a class="index-content-title" href="{{link_to_show}}" target="{{target}}" title="{{title_text}}">
<div class="link-img-wrap{{display_image}}"> <div class="link-img-wrap{{display_image}}">
<img src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}"> <img src="{{img_src}}" alt="{{img_description}}">
</div> </div>
<h4> <h4>
{{title}} {{title}}

View File

@ -6,7 +6,7 @@
<li class="index-content col-md-4 col-sm-4"> <li class="index-content col-md-4 col-sm-4">
<a class="index-content-title" href="{{link_to_show}}" target="{{target}}" title="{{title_text}}"> <a class="index-content-title" href="{{link_to_show}}" target="{{target}}" title="{{title_text}}">
<div class="link-img-wrap{{display_image}}"> <div class="link-img-wrap{{display_image}}">
<img src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}"> <img src="{{img_src}}" alt="{{img_description}}">
</div> </div>
<h4> <h4>
<span class="link-title"> <span class="link-title">