diff --git a/assets/images/design_thumb.jpg b/assets/images/design_thumb.jpg
new file mode 100644
index 0000000..d6785a2
Binary files /dev/null and b/assets/images/design_thumb.jpg differ
diff --git a/assets/images/design_thumb.png b/assets/images/design_thumb.png
deleted file mode 100644
index 34862b4..0000000
Binary files a/assets/images/design_thumb.png and /dev/null differ
diff --git a/assets/javascripts/app.js b/assets/javascripts/app.js
index f68ec0f..372fb02 100644
--- a/assets/javascripts/app.js
+++ b/assets/javascripts/app.js
@@ -2,7 +2,7 @@
// ECMAScript 5 嚴格模式
'use strict';
- //header fixed在上方
+ //header fixed在上方
function initdata1() {
if ( $('.homebanner').length != 0) {
$('.layout-header').css('height', '');
@@ -21,1364 +21,1291 @@
}
}
- }
+ }
// 初始函數: 把所有的程式碼都包在init裡面,方便在之後的jQuery ready 函數裡一次呼叫
function init() {
- // 快取一些常用的變數
- var doc = document;
- var lang = doc.documentElement.lang;
- var pageModule = doc.body.getAttribute('data-module');
- var resizeTimer = -1;
+ // 快取一些常用的變數
+ var doc = document;
+ var lang = doc.documentElement.lang;
+ var pageModule = doc.body.getAttribute('data-module');
+ var resizeTimer = -1;
- // 把所有的函數都包在orbit這個物件裡並按模組做簡單的分類
- var orbit = {
+ // 把所有的函數都包在orbit這個物件裡並按模組做簡單的分類
+ var orbit = {
- // 工具函數,裡面包含可以重覆使用的函數
- utils: {
- // 字數限制函數, 因為系統預設沒有,所以使用JS來做
- // els = 元素, maxLen = 限制長度
- truncateText: function(els, maxLen) {
- var els = doc.querySelectorAll(els);
- var newTitle = '';
- var i = -1;
- var elsLen = els.length;
+ // 工具函數,裡面包含可以重覆使用的函數
+ utils: {
+ // 字數限制函數, 因為系統預設沒有,所以使用JS來做
+ // els = 元素, maxLen = 限制長度
+ truncateText: function(els, maxLen) {
+ var els = doc.querySelectorAll(els);
+ var newTitle = '';
+ var i = -1;
+ var elsLen = els.length;
- for (i = 0; i < elsLen; i++) {
- if (els[i].firstChild !== null) {
- if (els[i].firstChild.length > maxLen) {
- newTitle = els[i].firstChild.textContent;
- els[i].textContent = newTitle.substring(0, maxLen) + '...';
+ for (i = 0; i < elsLen; i++) {
+ if (els[i].firstChild !== null) {
+ if (els[i].firstChild.length > maxLen) {
+ newTitle = els[i].firstChild.textContent;
+ els[i].textContent = newTitle.substring(0, maxLen) + '...';
+ }
}
}
}
- }
- },
-
- // 外掛,所有的外掛都可以放到這個物件裡
- // plugins: {
- // // 自適應圖片裁切,Ray的外掛
- // bullEye: function() {
- // $('.bullseye').bullseye({
- // fadeEffect: false
- // });
- // }
- // },
-
-
- member: {
- // 欄位相同高度,小心這個函數沒有計算到圖片高度,所以可能要搭配 jQuery load函數使用,或是之後使用更好的方式例如 CSS3 flexbox
- equalHeight: function(el) {
- var bigbrother = -1;
- var $el = $(el);
- $el.each(function(i) {
- bigbrother = bigbrother > $el.eq(i).height() ? bigbrother : $el.eq(i).height();
- });
-
- $el.height(bigbrother);
},
- // 把沒有完成資料的表格列藏起來, 因為後台不管有沒有資料都會輸出項目,所以需要在前台藏起來…
- removeEmptyRow: function() {
- // index 頁面項目
- $('.i-member-profile-item .i-member-value').each(function() {
- if ($(this).text().trim() === '' || $(this).text().trim() === ':') {
- $(this).parent().addClass('hide');
- }
- });
-
- // show 頁面項目
- $('.show-member .member-data th, .show-member .member-data td').each(function() {
- if ($(this).text().trim() === '') {
- $(this).parent('tr').addClass('hide');
- }
- });
- },
- },
-
- archives: {
- // 把沒有文字內容的標題藏起來,因為就算是標題裡沒有文字系統仍然會輸出,這樣會造成一些多餘的CSS margins, paddings,或許之後也可以使用 CSS3 :empty selector 處理
- // el = 要移除的元素
- removeEmptyTitle: function(el) {
- var $el = $(el);
- var $els = $el.children();
-
- $.each($els, function(i, val) {
- if ($els.eq(i).text().trim() === '') {
- $els.eq(i).addClass('hide');
- }
- });
-
- $.each($el, function(i, val) {
- if ($el.eq(i).children('.hide').length >= 2) {
- $el.eq(i).addClass('hide');
- }
- });
- },
-
- // bootstarp panel 功能擴充,因為原本的功能不支援多個panel
- extendPanel: function() {
- var len = $('.i-archive .panel-title').length;
- var i = -1;
- if (len > 0) {
- // 新增數字到要對應的panel按鈕id及href上面
- for (i = 0; i < len; i++) {
- $('.panel-title:eq(' + i + ') .collapsed').attr('href', '#collapse' + i);
- $('.panel-collapse:eq(' + i + ')').attr('id', 'collapse' + i);
- }
- }
- }
- },
-
- adBanner: {
- // 讓AD banner 的圖片可以點選,因為系統預設輸出的圖片是沒有連結的
- // els = 要可以點選的元素(需要配合有data-link這個參數及data-targe才能使用)
- addLinkOnADBanner: function(els) {
- $.each(els, function() {
- if ($(this).data('link') !== '' && !$(this).hasClass('youtube')) {
- $(this).on('click', function() {
- var target = $(this).data('target');
- var link = $(this).data('link');
-
- // 設定頁面打開的方式,記得要加上data-target在HTML裡面
- if (target === '_blank') {
- window.open(link, target);
- } else {
- window.location.href = link;
- }
- }).addClass('cursor'); // cursor類別樣式定義在CSS裡面
- }
- });
- },
-
- },
+ // 外掛,所有的外掛都可以放到這個物件裡
+ // plugins: {
+ // // 自適應圖片裁切,Ray的外掛
+ // bullEye: function() {
+ // $('.bullseye').bullseye({
+ // fadeEffect: false
+ // });
+ // }
+ // },
+ member: {
+ // 欄位相同高度,小心這個函數沒有計算到圖片高度,所以可能要搭配 jQuery load函數使用,或是之後使用更好的方式例如 CSS3 flexbox
+ equalHeight: function(el) {
+ var bigbrother = -1;
+ var $el = $(el);
+ $el.each(function(i) {
+ bigbrother = bigbrother > $el.eq(i).height() ? bigbrother : $el.eq(i).height();
+ });
- // 移除行動版下拉選單
- removeDropdown: function() {
- var $nav = $('#main-nav');
-
- $nav
- .find('.menu-drop')
- .remove();
- $nav
- .find('.opened')
- .removeClass('opened');
- },
- // 網站次選單設定,如果次選單有第三層就新增下拉選單的圖示及加上bootstrap class
- // els = 選單元素
- sitemenuDropdown: function(els) {
- var els = doc.querySelectorAll('.sitemenu-list.level-2');
- var len = els.length;
- var i = -1;
- var caret = null;
-
- for (i = 0; i < len; i++) {
- if (els[i].children.length) {
- caret = doc.createElement('span');
- caret.className = 'sitemenu-dropdown-toggle fa fa-caret-down';
- caret.setAttribute('data-toggle', 'dropdown');
-
- els[i].parentNode.insertBefore(caret, els[i]);
- els[i].className += ' dropdown-menu';
- }
- }
- },
-
- // 回到頁面最頂端,動態產生DOM
- // txt = 按鈕的文字, speed = 捲動時的速度
- goBackTop: function(txt, speed) {
- var top = document.createElement('div');
- top.className = 'go-back-top no-print';
- top.textContent = txt || 'top';
- doc.body.appendChild(top);
-
- // 判斷是否顯示按鈕
- $(window).scroll(function() {
- if ($(this).scrollTop() !== 0) {
- $('.go-back-top').fadeIn();
- } else {
- $('.go-back-top').fadeOut();
- }
- });
-
-
-
-
- // 捲動效果
- $('.go-back-top').on('click', function() {
- $('body, html').animate({
- scrollTop: 0
- }, speed || 300);
- return false;
- });
- },
-
- // Multi-column layout, passing ID or class string as parameters and a
- // Bootstrap col class for full width, eg: col-md-12
- setColumn: function(leftCol, rightCol, columnCls) {
- var $leftCol = $(leftCol);
- var $rightCol = $(rightCol);
- var columnCls = columnCls || 'col-sm-12';
-
- if ($leftCol.length && $rightCol.length) {
- $.each([$leftCol, $rightCol], function() {
- if ($(this).is(':empty')) {
- $(this)
- .addClass('empty-column')
- .siblings()
- .removeClass(function(index, css) {
- return (css.match(/(^|\s)col-\S+/g) || []).join(' ');
- })
- .addClass(columnCls);
- }
- });
- }
- },
-
- MobileMenu: function() {
- var $menu = $('[data-menu-level="0"]');
-
- $menu.find('ul[data-menu-level="1"]').parent().addClass('mobile-menu1');
- $menu.find('ul[data-menu-level="2"]').parent().addClass('mobile-menu2');
-
- var $caret1 = $('');
- var $caret2 = $('');
-
- // 如果有第二層選單,新增對應的類別到parent元素上
- $('.nav-level-1')
- .parent('li')
- .addClass('has-dropdown level-1');
-
- // 檢查是否已經有dropdown-toggle-icon這個元素,才不會在resize事件中重覆新增
- if ($('.has-dropdown.level-1 .menu-drop').length < 1) {
- $('.mobile-menu1').append($caret1);
-
-
- // 如果有第三層選單,新增對應的類別到parent元素上
- $('.nav-level-2')
- .parent('li')
- .addClass('has-dropdown level-2');
- $caret2.appendTo('.has-dropdown.level-2');
- }
- },
-
- ClickMenuHandler: function() {
- // 處理主選單切換(漢堡 icon)
- $(document).on('click', '.navbar-toggle', function (e) {
- e.preventDefault();
-
- // 確保 .navbar-toggle 放到 .modules-menu 後面
- $('.mobile-menu').each(function () {
- var $menu = $(this);
- if ($menu.find('.modules-menu').length && !$menu.find('.modules-menu + .navbar-toggle').length) {
- $menu.find('.modules-menu').after($menu.find('.navbar-toggle'));
- }
- });
-
- $('.mobile-menu').toggleClass('active');
- $('body').toggleClass('noscroll');
- $('.mobile-menu .navbar-toggle').removeClass('collapsed');
-
- // 關閉所有下拉選單
- $('.mobile-menu1 > ul, .mobile-menu2 > ul').slideUp(500);
- $('.mobile-menu1 > .menu-drop, .mobile-menu2 > .menu-drop').removeClass('opened');
-
- // 無障礙:聚焦第一個互動元素
- if ($('.mobile-menu').hasClass('active')) {
- setTimeout(function () {
- $('.modules-menu').find('input, button, select, textarea, a').first().focus();
- }, 100);
- }
- });
-
- $('.mobile-menu1 > .menu-drop').click(function(){
- var $that = $(this);
- var opencheck1 = $that.hasClass('opened');
- if ( opencheck1 == 0 ) {
- $('.mobile-menu1 > ul').not($that.siblings('ul')).slideUp(500);
- $('.mobile-menu1 > .menu-drop').not($that).removeClass('opened');
- $('.mobile-menu2 > ul').slideUp(500);
- $('.mobile-menu2 > .menu-drop').removeClass('opened');
- $that.siblings('ul').slideDown(500);
- $that.addClass('opened');
-
- } else if (opencheck1 == 1) {
- $that.siblings('ul').slideUp(500);
- $('.mobile-menu2 > ul').slideUp(500);
- $('.mobile-menu2 > .menu-drop').removeClass('opened');
- $that.removeClass('opened');
-
- }
- })
-
- $('.mobile-menu2 > .menu-drop').click(function(){
- var $that = $(this);
- var opencheck2 = $that.hasClass('opened');
- if ( opencheck2 == 0 ) {
- $('.mobile-menu2 > ul').not($that.siblings('ul')).slideUp(500);
- $('.mobile-menu2 > .menu-drop').not($that).removeClass('opened');
- $that.siblings('ul').slideDown(500);
- $that.addClass('opened');
- } else if (opencheck2 == 1) {
- $that.siblings('ul').slideUp(500);
- $that.removeClass('opened');
- }
- })
- }
- };
-
- // 把orbit物件加到window物件裡面並改名為ORBITFRONT來減少名稱衝突的機會
- win.ORBITFRONT = orbit;
-
- // 在switch裡測試頁面模組後執行對應的函數
- switch (pageModule) {
- case 'home':
- break;
- case 'member':
- orbit.member.removeEmptyRow();
- $('.index-member-3 .member-data-title-email').empty();
- break;
- case 'archive':
- orbit.archives.removeEmptyTitle('.i-archive__category-item');
- orbit.archives.extendPanel();
- break;
- case 'gallery':
- orbit.utils.truncateText('.show-description', 15);
- break;
- default:
- break;
- }
-
- // 在所有的頁面(包含首頁)執行下面這幾個函數
- initdata1();
- orbit.sitemenuDropdown();
- orbit.goBackTop('top', 800);
- // orbit.plugins.bullEye();
- orbit.setColumn('.left-column', '.right-column');
-
- // 自適應網頁使用,當網頁載入時,如果視窗寬度小於769,就執行orbit.nav.setDropdown函數
- if ($(window).width() < 769) {
- // orbit.nav.setDropdown();
- orbit.MobileMenu();
- $('.mobile-menu').append($('.modules-menu'));
- $('.header-buttom').appendTo($('.modules-menu'));
- orbit.ClickMenuHandler();
- }
-
- // 自適應網頁使用,當使用者改變瀏覽器寬度時呼叫orbit.nav.setDropdown函數
- $(window).resize(function() {
- if ($(window).width() < 769) {
-
- if (resizeTimer) clearTimeout(resizeTimer);
- resizeTimer = setTimeout(function() {
- // if ( $('.modules-menu i').length == 0 ) {
- // orbit.MobileMenu();
- // }
- if( $('.mobile-menu .modules-menu').length == 0 ) {
- $('.mobile-menu').append($('.modules-menu'));
- $('.header-buttom').appendTo($('.modules-menu'));
- orbit.MobileMenu();
- orbit.ClickMenuHandler();
- // $('.navbar-toggle').bind('click', orbit.ClickMenuHandler);
- // $('.navbar-toggle').bind(orbit.ClickMenuHandler());
- }
- },500 )} else {
- resizeTimer = setTimeout(function(){
- if( $('.mobile-menu .modules-menu').length > 0 ) {
- $('.layout-header .outdropdowns .dropdowns').append($('.modules-menu'));
- $('.dropdowns').append($('.header-buttom'));
- }
- orbit.removeDropdown();
- }, 500);
- }
- });
- // if($(window).width()<769){
- // $('.header-buttom').appendTo($('.modules-menu'));
- // }else{
- // $('.header-buttom').appendTo($('.dropdowns'));
- // }
- function forFreeGo() {
- //表單legend
- $("fieldset").each(function () {
- const $fieldset = $(this);
- const hasLegend = $fieldset.children("legend").length > 0;
-
- if (!hasLegend) {
- // 嘗試抓最上層的群組標題,例如 "Apply"
- const headingText = $fieldset.find(".form-group:first").text().trim() || "表單填寫";
-
- // 插入 legend 為第一個元素
- $fieldset.prepend(``);
- }
- });
-
- // 處理「上一頁」按鈕
- $(".cmdBackward").each(function () {
- $(this)
- .attr("title", "上一頁")
- .attr("aria-label", "上一頁");
-
- if ($(this).find(".sr-only").length === 0) {
- $(this).append('上一頁');
- }
-
- $(this).find("i").attr("aria-hidden", "true");
- $(this).find(".icon").attr("aria-hidden", "true");
- });
-
- // 處理「下一頁」按鈕
- $(".cmdForward").each(function () {
- $(this)
- .attr("title", "下一頁")
- .attr("aria-label", "下一頁");
-
- if ($(this).find(".sr-only").length === 0) {
- $(this).append('下一頁');
- }
-
- $(this).find("i").attr("aria-hidden", "true");
- $(this).find(".icon").attr("aria-hidden", "true");
- });
-
- $('.pagination li.active a').attr('aria-current', 'page');
-
- $('path').each(function () {
- $(this)
- .attr('aria-hidden', 'true')
- .attr('focusable', 'false')
- .attr('tabindex', '-1');
- });
-
- $('.controlplay a[role="radio"]').on('click', function () {
- // 取消所有的 aria-checked 並還原文字
- $('.controlplay a[role="radio"]').attr('aria-checked', 'false');
- $('.controlplay a[role="radio"] span').each(function () {
- var text = $(this).text().replace('(已選取)', '');
- $(this).text(text);
- });
-
- // 設定目前被點擊的按鈕為已選取
- $(this).attr('aria-checked', 'true');
- var selectedText = $(this).text().trim();
- $(this).find('span').text(selectedText + '(已選取)');
- });
- // 遍历所有的 .s-annc__tag-wrap 元素
- $('.s-annc__tag-wrap').each(function() {
- // 遍历 .s-annc__tag-wrap 下的每个 a 元素
- $(this).find('a').each(function() {
- // 如果 .s-annc__tag 元素为空或没有内容
- if ($(this).find('.s-annc__tag').is(':empty')) {
- // 移除该 a 元素
- $(this).remove();
- }
- });
- });
-
- $('.w-ba-banner__caption li button').each(function (index) {
- const $slide = $('.w-ba-banner__slide').eq(index);
- const title = $slide.attr('data-cycle-title')?.trim();
-
- if (title) {
- const fullText = title + '的pager';
- $(this).attr('aria-label', fullText);
- $(this).attr('title', fullText);
- }
- });
- // 當 focus 到 menu link 時,顯示對應 ul
- $('.sitemenu-item > a').on('focus', function () {
- $(this).siblings('ul').addClass('show');
- });
-
- // 當 focus 離開最後一個子選單 link 時,移除 .show
- $('.sitemenu-item').each(function () {
- const $submenuLinks = $(this).find('ul a');
-
- if ($submenuLinks.length > 0) {
- $submenuLinks.last().on('blur', function () {
- // 當最後一個子項 blur 時關閉 ul
- $(this).closest('ul').removeClass('show');
- });
- } else {
- // 若沒有子項,當主選單項 blur 也隱藏
- $(this).find('> a').on('blur', function () {
- $(this).siblings('ul').removeClass('show');
- });
- }
- });
- if (document.documentElement.lang === 'zh_tw') {
- document.documentElement.lang = 'zh-Hant';
- }
- //tab鍵按下
- $(document).on('keydown', function(e) {
- if (e.key === "Tab" || e.keyCode === 9) {
- $('.header-nav, .dropdowns').css('display', 'block');
- }
- });
-
- //li被hover
- function handleHover() {
- if ($(window).width() > 769) {
- $('li').off('mouseenter mouseleave').hover(
- function() {
- $(this).children('ul').addClass('show');
+ $el.height(bigbrother);
},
- function() {
- $(this).children('ul').removeClass('show');
- }
- );
- } else {
- $('li').off('mouseenter mouseleave'); // 移除 hover 事件
- }
- }
- // 先執行一次
- handleHover();
-
- // 監聽視窗大小變化
- $(window).on('resize', function() {
- handleHover();
- });
- //刪除空的h1
- $('h1').each(function() {
- if ($(this).text().trim() === '') {
- $(this).remove();
- }
- });
- //refresh_btn加上aria-label
- $('#refresh_btn').each(function() {
- var $this = $(this);
-
- // 如果 button 尚未有 aria-label,則新增
- if (!$this.attr('aria-label')) {
- $this.attr('aria-label', '重新整理');
- }
- });
- //無障礙會員表格刪除沒有顯示的th
- $('.i-member-tr-head').each(function() {
- if ($(this).css('display') === 'none') {
- $(this).remove();
- }
- });
- //無障礙公告a是空的
- $('.w-annc__subtitle').each(function () {
- var $this = $(this);
- var $link = $this.find('a');
-
- // 檢查 a 是否存在,且去除空白後是否為空字串
- if ($link.length && $link.text().trim() === '') {
- $this.remove(); // 移除外層 .w-annc__subtitle
- }
- });
- //無障礙單位轉換
- $("[style*='font-size']").each(function() {
- var fontSize = $(this).css("font-size");
- if (fontSize.includes("px")) {
- var pxValue = parseFloat(fontSize); // 取得數值
- var emValue = pxValue / 16; // 假設 1em = 16px
- $(this).css("font-size", emValue + "em");
- }
- });
- $("[style*='font-size']").each(function() {
- var fontSize = $(this).css("font-size");
- if (fontSize.includes("pt")) {
- var ptValue = parseFloat(fontSize); // 取得數值
- var emValue = ptValue / 12; // 1em = 12pt(一般轉換標準)
- $(this).css("font-size", emValue + "em");
- }
- });
- $("[style*='font-size']").each(function() {
- var styleAttr = $(this).attr("style"); // 取得原始 style 屬性字串
- var match = styleAttr.match(/font-size\s*:\s*(\d+(?:\.\d+)?)pt/i);
- if (match) {
- var ptValue = parseFloat(match[1]);
- var emValue = ptValue / 12;
- // 替換 style 屬性字串中的 pt 為 em
- var newStyle = styleAttr.replace(/font-size\s*:\s*\d+(?:\.\d+)?pt/i, `font-size: ${emValue}em`);
- $(this).attr("style", newStyle);
- }
- });
- //表格scope
- $("table").each(function() {
- $(this).find("tr").each(function(rowIndex) {
- $(this).find("th").each(function(colIndex) {
- if (rowIndex === 0) {
- // 第一列的 th,適用於該欄
- $(this).attr("scope", "col");
- } else if (colIndex === 0) {
- // 其他列的第一個 th,適用於該行
- $(this).attr("scope", "row");
- }
- });
+ // 把沒有完成資料的表格列藏起來, 因為後台不管有沒有資料都會輸出項目,所以需要在前台藏起來…
+ removeEmptyRow: function() {
+ // index 頁面項目
+ $('.i-member-profile-item .i-member-value').each(function() {
+ if ($(this).text().trim() === '' || $(this).text().trim() === ':') {
+ $(this).parent().addClass('hide');
+ }
});
- });
- $(".banner-pager button").addClass('banner-pagerbtn');
- $(".banner-pager button").attr("type","button");
- $(".banner-pager button").append('下一張');
- $("button").attr("role", "button");
- $("select").attr("title","選擇類別");
- $(".jarallax-video-audio").attr("role", "button");
- $('button').each(function() {
- var $this = $(this);
- if (!$this.attr('title') || $this.attr('title').trim() === '') {
- $this.attr('title', '按鈕');
+
+ // show 頁面項目
+ $('.show-member .member-data th, .show-member .member-data td').each(function() {
+ if ($(this).text().trim() === '') {
+ $(this).parent('tr').addClass('hide');
+ }
+ });
+ },
+ },
+
+ archives: {
+ // 把沒有文字內容的標題藏起來,因為就算是標題裡沒有文字系統仍然會輸出,這樣會造成一些多餘的CSS margins, paddings,或許之後也可以使用 CSS3 :empty selector 處理
+ // el = 要移除的元素
+ removeEmptyTitle: function(el) {
+ var $el = $(el);
+ var $els = $el.children();
+
+ $.each($els, function(i, val) {
+ if ($els.eq(i).text().trim() === '') {
+ $els.eq(i).addClass('hide');
+ }
+ });
+
+ $.each($el, function(i, val) {
+ if ($el.eq(i).children('.hide').length >= 2) {
+ $el.eq(i).addClass('hide');
+ }
+ });
+ },
+
+ // bootstarp panel 功能擴充,因為原本的功能不支援多個panel
+ extendPanel: function() {
+ var len = $('.i-archive .panel-title').length;
+ var i = -1;
+ if (len > 0) {
+ // 新增數字到要對應的panel按鈕id及href上面
+ for (i = 0; i < len; i++) {
+ $('.panel-title:eq(' + i + ') .collapsed').attr('href', '#collapse' + i);
+ $('.panel-collapse:eq(' + i + ')').attr('id', 'collapse' + i);
+ }
+ }
}
- });
- $('img').each(function() {
- var $this = $(this);
- if (!$this.attr('alt') || $this.attr('alt').trim() === '') {
- $this.attr('alt', '這是一張圖片');
+ },
+
+ adBanner: {
+ // 讓AD banner 的圖片可以點選,因為系統預設輸出的圖片是沒有連結的
+ // els = 要可以點選的元素(需要配合有data-link這個參數及data-targe才能使用)
+ addLinkOnADBanner: function(els) {
+ $.each(els, function() {
+ if ($(this).data('link') !== '' && !$(this).hasClass('youtube')) {
+ $(this).on('click', function() {
+ var target = $(this).data('target');
+ var link = $(this).data('link');
+
+ // 設定頁面打開的方式,記得要加上data-target在HTML裡面
+ if (target === '_blank') {
+ window.open(link, target);
+ } else {
+ window.location.href = link;
+ }
+ }).addClass('cursor'); // cursor類別樣式定義在CSS裡面
+ }
+ });
+ },
+
+ },
+
+
+
+ // 移除行動版下拉選單
+ removeDropdown: function() {
+ var $nav = $('#main-nav');
+
+ $nav
+ .find('.menu-drop')
+ .remove();
+ $nav
+ .find('.opened')
+ .removeClass('opened');
+ },
+ // 網站次選單設定,如果次選單有第三層就新增下拉選單的圖示及加上bootstrap class
+ // els = 選單元素
+ sitemenuDropdown: function(els) {
+ var els = doc.querySelectorAll('.sitemenu-list.level-2');
+ var len = els.length;
+ var i = -1;
+ var caret = null;
+
+ for (i = 0; i < len; i++) {
+ if (els[i].children.length) {
+ caret = doc.createElement('span');
+ caret.className = 'sitemenu-dropdown-toggle fa fa-caret-down';
+ caret.setAttribute('data-toggle', 'dropdown');
+
+ els[i].parentNode.insertBefore(caret, els[i]);
+ els[i].className += ' dropdown-menu';
+ }
}
- });
- $('img').each(function() {
- var $this = $(this);
- if (!$this.attr('title') || $this.attr('title').trim() === '') {
- $this.attr('title', '這是一張圖片');
- }
- });
- $('img').each(function() {
- var $this = $(this);
-
- // 檢查 img 的 alt 屬性是否為 "裝飾圖片"
- if ($this.attr('alt') === "裝飾圖片" || $this.attr('title') === "裝飾圖片") {
- // 設定 alt 為空字串
- $this.attr('alt', '');
-
- // 移除 title 屬性
- $this.removeAttr('title');
+ },
+
+ // 回到頁面最頂端,動態產生DOM
+ // txt = 按鈕的文字, speed = 捲動時的速度
+ goBackTop: function(txt, speed) {
+ var top = document.createElement('div');
+ top.className = 'go-back-top no-print';
+ top.textContent = txt || 'top';
+ doc.body.appendChild(top);
+
+ // 判斷是否顯示按鈕
+ $(window).scroll(function() {
+ if ($(this).scrollTop() !== 0) {
+ $('.go-back-top').fadeIn();
+ } else {
+ $('.go-back-top').fadeOut();
}
});
- $(".w-annc__img-wrap a").each(function () {
- var $this = $(this);
- // 確保 內沒有文字節點 (避免重複添加)
- if ($this.text().trim() === "") {
- $this.append('公告圖片');
- }
- });
- $(".widget-link__widget-title").each(function () {
- if ($(this).text().trim() === "") {
- $(this).append('公告標題');
- }
+
+
+
+
+ // 捲動效果
+ $('.go-back-top').on('click', function() {
+ $('body, html').animate({
+ scrollTop: 0
+ }, speed || 300);
+ return false;
});
- $(".sitemenu-title").each(function () {
- if ($(this).text().trim() === "") {
- $(this).append('次選單');
- }
- });
- $(".annc-title").each(function () {
- if ($(this).text().trim() === "") {
- $(this).append('內頁公告標題');
+ },
+
+ // Multi-column layout, passing ID or class string as parameters and a
+ // Bootstrap col class for full width, eg: col-md-12
+ setColumn: function(leftCol, rightCol, columnCls) {
+ var $leftCol = $(leftCol);
+ var $rightCol = $(rightCol);
+ var columnCls = columnCls || 'col-sm-12';
+
+ if ($leftCol.length && $rightCol.length) {
+ $.each([$leftCol, $rightCol], function() {
+ if ($(this).is(':empty')) {
+ $(this)
+ .addClass('empty-column')
+ .siblings()
+ .removeClass(function(index, css) {
+ return (css.match(/(^|\s)col-\S+/g) || []).join(' ');
+ })
+ .addClass(columnCls);
+ }
+ });
}
- });
- $(".event-annc-title").each(function () {
- if ($(this).text().trim() === "") {
- $(this).append('內頁活動公告標題');
- }
- });
- $(".show-title").each(function () {
- if ($(this).text().trim() === "") {
- $(this).append('內頁活動公告標題');
- }
- });
- $(".w-annc__widget-title").each(function () {
- if ($(this).text().trim() === "") {
- $(this).append('公告標題');
- }
- });
- $(".widget-title").each(function () {
- if ($(this).text().trim() === "") {
- $(this).append('網路資源標題');
- }
- });
- $(".widget-title").each(function () {
- if ($(this).text().trim() === "") {
- $(this).append('網路資源標題');
- }
- });
- $('input').each(function() {
- var $this = $(this);
- if (!$this.attr('title') || $this.attr('title').trim() === '') {
- $this.attr('title', '網內搜尋');
- }
- });
- $('.rucaptcha-image').each(function() {
- var $button = $(this).next('button'); // 取得緊接在 .rucaptcha-image 之後的 button
- if ($button.length && !$button.attr('aria-label')) {
- $button.attr('aria-label', '播放驗證碼語音');
- }
- });
- //有連結目的之所有a標籤加上aria-label和title
- $('a').each(function () {
- var $a = $(this);
- var href = $a.attr('href');
- if (!href) return;
+ },
- var hasSrOnly = $a.find('.sr-only').length > 0;
+ MobileMenu: function() {
+ var $menu = $('[data-menu-level="0"]');
- // 若有 .sr-only,移除 aria-label 和 title 避免重複朗讀
- if (hasSrOnly) {
- $a.removeAttr('aria-label');
- $a.removeAttr('title');
- return; // 有 .sr-only 就不做其他處理
- }
+ $menu.find('ul[data-menu-level="1"]').parent().addClass('mobile-menu1');
+ $menu.find('ul[data-menu-level="2"]').parent().addClass('mobile-menu2');
- // ----- aria-label 邏輯 -----
- if (!$a.attr('aria-label')) {
- let ariaLabel = '';
+ var $caret1 = $('');
+ var $caret2 = $('');
- // 加入開啟方式
- if ($a.attr('target') === '_blank') {
- ariaLabel += '在新視窗開啟 ';
- } else if ($a.attr('target') === '_self') {
- ariaLabel += '在本視窗開啟 ';
- }
+ // 如果有第二層選單,新增對應的類別到parent元素上
+ $('.nav-level-1')
+ .parent('li')
+ .addClass('has-dropdown level-1');
- // 如果包含圖片且有圖片 title
- if ($a.find('img').length) {
- const imgTitle = $a.find('img').attr('title');
- if (imgTitle) ariaLabel = imgTitle;
- } else {
- const text = $a.text().trim();
- if (text) {
- ariaLabel += text;
- } else if ($a.children('span').length === 1) {
- ariaLabel += $a.children('span').text().trim();
- }
- }
+ // 檢查是否已經有dropdown-toggle-icon這個元素,才不會在resize事件中重覆新增
+ if ($('.has-dropdown.level-1 .menu-drop').length < 1) {
+ $('.mobile-menu1').append($caret1);
- if (ariaLabel) {
- $a.attr('aria-label', ariaLabel);
- }
- }
- // ----- title 邏輯 -----
- if (!$a.attr('title')) {
- let titleStr = '';
+ // 如果有第三層選單,新增對應的類別到parent元素上
+ $('.nav-level-2')
+ .parent('li')
+ .addClass('has-dropdown level-2');
+ $caret2.appendTo('.has-dropdown.level-2');
+ }
+ },
- if ($a.attr('target') === '_blank') {
- titleStr += '在新視窗開啟 ';
- } else if ($a.attr('target') === '_self') {
- titleStr += '在本視窗開啟 ';
- }
+ ClickMenuHandler: function() {
+ // 處理主選單切換(漢堡 icon)
+ $(document).on('click', '.navbar-toggle', function (e) {
+ e.preventDefault();
- if ($a.find('img').length) {
- titleStr = '這是一張照片';
- } else {
- const text = $a.text().trim();
- if (text) {
- titleStr += text;
- } else if ($a.children('span').length === 1) {
- titleStr += $a.children('span').text().trim();
- }
- }
-
- if (titleStr) {
- $a.attr('title', titleStr);
- }
- }
- });
- $('a').each(function () {
- const $link = $(this);
- const linkText = $link.text().trim();
-
- $link.find('img').each(function () {
- const $img = $(this);
- const altText = $img.attr('alt')?.trim();
-
- // 如果圖片 alt 是空的,就略過(已符合)
- if (altText === '') return;
-
- // 如果圖片 alt 等於文字內容,就將 alt 清空,避免重複
- if (altText === linkText) {
- $img.attr('alt', '');
- }
- });
+ // 確保 .navbar-toggle 放到 .modules-menu 後面
+ $('.mobile-menu').each(function () {
+ var $menu = $(this);
+ if ($menu.find('.modules-menu').length && !$menu.find('.modules-menu + .navbar-toggle').length) {
+ $menu.find('.modules-menu').after($menu.find('.navbar-toggle'));
+ }
});
- // 刪除banner-slide的空連結和空連結目標
- for(var i=0;i<$('.w-ba-banner__slide a').length;i++){
- if($('.w-ba-banner__slide a').eq(i).attr('href')=="")
- $('.w-ba-banner__slide a').eq(i).removeAttr('href');
- if($('.w-ba-banner__slide a').eq(i).attr('target') == "")
- $('.w-ba-banner__slide a').eq(i).removeAttr('target');
- };
- // 幫無標題之iframe加上title
- for(var i=0;i<$('iframe').length;i++)
- if($('iframe').eq(i).attr('title')=="" || $('iframe').eq(i).attr('title')== undefined ){
- if($('iframe').eq(i).attr('src').search('facebook') != -1 )
- $('iframe').eq(i).attr('title','facebook');
- else if($('iframe').eq(i).attr('src').search('google') != -1 )
- $('iframe').eq(i).attr('title','google');
- else if($('iframe').eq(i).attr('src').search('youtube') != -1 )
- $('iframe').eq(i).attr('title','youtube');
- else if($('iframe').eq(i).attr('src').search('twitframe') != -1 )
- $('iframe').eq(i).attr('title','twitter');
- else
- $('iframe').eq(i).attr('title','unknown');
- };
- //button是空的就加上內容
- $('button').each(function() {
- var $this = $(this);
- var titleText = $this.attr('title') || '';
+ $('.mobile-menu').toggleClass('active');
+ $('body').toggleClass('noscroll');
+ $('.mobile-menu .navbar-toggle').removeClass('collapsed');
- // 檢查 button 是否是空的(沒有可見文字或子元素)
- if ($this.text().trim() === '' && !$this.children().length && titleText) {
- // 新增隱藏的 span,內容為 title
- $this.append('' + titleText + '');
+ // 關閉所有下拉選單
+ $('.mobile-menu1 > ul, .mobile-menu2 > ul').slideUp(500);
+ $('.mobile-menu1 > .menu-drop, .mobile-menu2 > .menu-drop').removeClass('opened');
+
+ // 無障礙:聚焦第一個互動元素
+ if ($('.mobile-menu').hasClass('active')) {
+ setTimeout(function () {
+ $('.modules-menu').find('input, button, select, textarea, a').first().focus();
+ }, 100);
+ }
+ });
+
+ $('.mobile-menu1 > .menu-drop').click(function(){
+ var $that = $(this);
+ var opencheck1 = $that.hasClass('opened');
+ if ( opencheck1 == 0 ) {
+ $('.mobile-menu1 > ul').not($that.siblings('ul')).slideUp(500);
+ $('.mobile-menu1 > .menu-drop').not($that).removeClass('opened');
+ $('.mobile-menu2 > ul').slideUp(500);
+ $('.mobile-menu2 > .menu-drop').removeClass('opened');
+ $that.siblings('ul').slideDown(500);
+ $that.addClass('opened');
+
+ } else if (opencheck1 == 1) {
+ $that.siblings('ul').slideUp(500);
+ $('.mobile-menu2 > ul').slideUp(500);
+ $('.mobile-menu2 > .menu-drop').removeClass('opened');
+ $that.removeClass('opened');
+
+ }
+ })
+
+ $('.mobile-menu2 > .menu-drop').click(function(){
+ var $that = $(this);
+ var opencheck2 = $that.hasClass('opened');
+ if ( opencheck2 == 0 ) {
+ $('.mobile-menu2 > ul').not($that.siblings('ul')).slideUp(500);
+ $('.mobile-menu2 > .menu-drop').not($that).removeClass('opened');
+ $that.siblings('ul').slideDown(500);
+ $that.addClass('opened');
+ } else if (opencheck2 == 1) {
+ $that.siblings('ul').slideUp(500);
+ $that.removeClass('opened');
+ }
+ })
+ }
+ };
+
+ // 把orbit物件加到window物件裡面並改名為ORBITFRONT來減少名稱衝突的機會
+ win.ORBITFRONT = orbit;
+
+ // 在switch裡測試頁面模組後執行對應的函數
+ switch (pageModule) {
+ case 'home':
+ break;
+ case 'member':
+ orbit.member.removeEmptyRow();
+ $('.index-member-3 .member-data-title-email').empty();
+ break;
+ case 'archive':
+ orbit.archives.removeEmptyTitle('.i-archive__category-item');
+ orbit.archives.extendPanel();
+ break;
+ case 'gallery':
+ orbit.utils.truncateText('.show-description', 15);
+ break;
+ default:
+ break;
}
- });
- // 刪除空的檔案室
- var archievelen = $('dd a.i-archive-files-item').length;
- for(i=archievelen-1;i>=0;i--)
- if($('dd a.i-archive-files-item').eq(i).html().trim()=="")
- $('dd a.i-archive-files-item').eq(i).parent('dd').remove();
- // 刪除具有空連結欄位的橫列
- for(var i = 0;i < $('*[data-list] tr td a').length ; i++)
- if($('*[data-list] tr td a').eq(i).html().trim()=="")
- $('*[data-list] tr td a').eq(i).parent('td').parent('tr').remove();
- // tab按鍵選到menu,會顯示下層的menu(為了符合無障礙)
- $('.nav-level-0>li>a').focus(function(e) {
- e.stopPropagation();
- $(this).parent().focus();
- if ($(this).parent().find('.nav-level-1').hasClass('show')) {
+
+ // 在所有的頁面(包含首頁)執行下面這幾個函數
+ initdata1();
+ orbit.sitemenuDropdown();
+ orbit.goBackTop('top', 800);
+ // orbit.plugins.bullEye();
+ orbit.setColumn('.left-column', '.right-column');
+
+ // 自適應網頁使用,當網頁載入時,如果視窗寬度小於769,就執行orbit.nav.setDropdown函數
+ if ($(window).width() < 769) {
+ // orbit.nav.setDropdown();
+ orbit.MobileMenu();
+ $('.mobile-menu').append($('.modules-menu'));
+ $('.header-buttom').appendTo($('.modules-menu'));
+ orbit.ClickMenuHandler();
+ }
+
+ // 自適應網頁使用,當使用者改變瀏覽器寬度時呼叫orbit.nav.setDropdown函數
+ $(window).resize(function() {
+ if ($(window).width() < 769) {
+
+ if (resizeTimer) clearTimeout(resizeTimer);
+ resizeTimer = setTimeout(function() {
+ // if ( $('.modules-menu i').length == 0 ) {
+ // orbit.MobileMenu();
+ // }
+ if( $('.mobile-menu .modules-menu').length == 0 ) {
+ $('.mobile-menu').append($('.modules-menu'));
+ $('.header-buttom').appendTo($('.modules-menu'));
+ orbit.MobileMenu();
+ orbit.ClickMenuHandler();
+ // $('.navbar-toggle').bind('click', orbit.ClickMenuHandler);
+ // $('.navbar-toggle').bind(orbit.ClickMenuHandler());
+ }
+ },500 )} else {
+ resizeTimer = setTimeout(function(){
+ if( $('.mobile-menu .modules-menu').length > 0 ) {
+ $('.layout-header .outdropdowns .dropdowns').append($('.modules-menu'));
+ $('.dropdowns').append($('.header-buttom'));
+ }
+ orbit.removeDropdown();
+ }, 500);
+ }
+ });
+ // if($(window).width()<769){
+ // $('.header-buttom').appendTo($('.modules-menu'));
+ // }else{
+ // $('.header-buttom').appendTo($('.dropdowns'));
+ // }
+ function forFreeGo() {
+ //表單legend
+ $("fieldset").each(function () {
+ const $fieldset = $(this);
+ const hasLegend = $fieldset.children("legend").length > 0;
+
+ if (!hasLegend) {
+ // 嘗試抓最上層的群組標題,例如 "Apply"
+ const headingText = $fieldset.find(".form-group:first").text().trim() || "表單填寫";
+
+ // 插入 legend 為第一個元素
+ $fieldset.prepend(``);
+ }
+ });
+
+ // 處理「上一頁」按鈕
+ $(".cmdBackward").each(function () {
+ $(this)
+ .attr("title", "上一頁")
+ .attr("aria-label", "上一頁");
+
+ if ($(this).find(".sr-only").length === 0) {
+ $(this).append('上一頁');
+ }
+
+ $(this).find("i").attr("aria-hidden", "true");
+ $(this).find(".icon").attr("aria-hidden", "true");
+ });
+
+ // 處理「下一頁」按鈕
+ $(".cmdForward").each(function () {
+ $(this)
+ .attr("title", "下一頁")
+ .attr("aria-label", "下一頁");
+
+ if ($(this).find(".sr-only").length === 0) {
+ $(this).append('下一頁');
+ }
+
+ $(this).find("i").attr("aria-hidden", "true");
+ $(this).find(".icon").attr("aria-hidden", "true");
+ });
+
+ $('.pagination li.active a').attr('aria-current', 'page');
+
+ $('path').each(function () {
+ $(this)
+ .attr('aria-hidden', 'true')
+ .attr('focusable', 'false')
+ .attr('tabindex', '-1');
+ });
+
+ $('.controlplay a[role="radio"]').on('click', function () {
+ // 取消所有的 aria-checked 並還原文字
+ $('.controlplay a[role="radio"]').attr('aria-checked', 'false');
+ $('.controlplay a[role="radio"] span').each(function () {
+ var text = $(this).text().replace('(已選取)', '');
+ $(this).text(text);
+ });
+
+ // 設定目前被點擊的按鈕為已選取
+ $(this).attr('aria-checked', 'true');
+ var selectedText = $(this).text().trim();
+ $(this).find('span').text(selectedText + '(已選取)');
+ });
+ // 遍历所有的 .s-annc__tag-wrap 元素
+ $('.s-annc__tag-wrap').each(function() {
+ // 遍历 .s-annc__tag-wrap 下的每个 a 元素
+ $(this).find('a').each(function() {
+ // 如果 .s-annc__tag 元素为空或没有内容
+ if ($(this).find('.s-annc__tag').is(':empty')) {
+ // 移除该 a 元素
+ $(this).remove();
+ }
+ });
+ });
+
+ $('.w-ba-banner__caption li button').each(function (index) {
+ const $slide = $('.w-ba-banner__slide').eq(index);
+ const title = $slide.attr('data-cycle-title')?.trim();
+
+ if (title) {
+ const fullText = title + '的pager';
+ $(this).attr('aria-label', fullText);
+ $(this).attr('title', fullText);
+ }
+ });
+ // 當 focus 到 menu link 時,顯示對應 ul
+ $('.sitemenu-item > a').on('focus', function () {
+ $(this).siblings('ul').addClass('show');
+ });
+
+ // 當 focus 離開最後一個子選單 link 時,移除 .show
+ $('.sitemenu-item').each(function () {
+ const $submenuLinks = $(this).find('ul a');
+
+ if ($submenuLinks.length > 0) {
+ $submenuLinks.last().on('blur', function () {
+ // 當最後一個子項 blur 時關閉 ul
+ $(this).closest('ul').removeClass('show');
+ });
} else {
- $('.nav-level-1').removeClass('show');
- $(this).parent().find('.nav-level-1').addClass('show');
+ // 若沒有子項,當主選單項 blur 也隱藏
+ $(this).find('> a').on('blur', function () {
+ $(this).siblings('ul').removeClass('show');
+ });
+ }
+ });
+ if (document.documentElement.lang === 'zh_tw') {
+ document.documentElement.lang = 'zh-Hant';
+ }
+ //tab鍵按下
+ $(document).on('keydown', function(e) {
+ if (e.key === "Tab" || e.keyCode === 9) {
+ $('.header-nav, .dropdowns').css('display', 'block');
+ }
+ });
+
+ //li被hover
+ function handleHover() {
+ if ($(window).width() > 769) {
+ $('li').off('mouseenter mouseleave').hover(
+ function() {
+ $(this).children('ul').addClass('show');
+ },
+ function() {
+ $(this).children('ul').removeClass('show');
+ }
+ );
+ } else {
+ $('li').off('mouseenter mouseleave'); // 移除 hover 事件
+ }
+ }
+
+ // 先執行一次
+ handleHover();
+
+ // 監聽視窗大小變化
+ $(window).on('resize', function() {
+ handleHover();
+ });
+ //刪除空的h1
+ $('h1').each(function() {
+ if ($(this).text().trim() === '') {
+ $(this).remove();
+ }
+ });
+ //refresh_btn加上aria-label
+ $('#refresh_btn').each(function() {
+ var $this = $(this);
+
+ // 如果 button 尚未有 aria-label,則新增
+ if (!$this.attr('aria-label')) {
+ $this.attr('aria-label', '重新整理');
+ }
+ });
+ //無障礙會員表格刪除沒有顯示的th
+ $('.i-member-tr-head').each(function() {
+ if ($(this).css('display') === 'none') {
+ $(this).remove();
+ }
+ });
+ //無障礙公告a是空的
+ $('.w-annc__subtitle').each(function () {
+ var $this = $(this);
+ var $link = $this.find('a');
+
+ // 檢查 a 是否存在,且去除空白後是否為空字串
+ if ($link.length && $link.text().trim() === '') {
+ $this.remove(); // 移除外層 .w-annc__subtitle
+ }
+ });
+ //無障礙單位轉換
+ $("[style*='font-size']").each(function() {
+ var fontSize = $(this).css("font-size");
+ if (fontSize.includes("px")) {
+ var pxValue = parseFloat(fontSize); // 取得數值
+ var emValue = pxValue / 16; // 假設 1em = 16px
+ $(this).css("font-size", emValue + "em");
+ }
+ });
+ $("[style*='font-size']").each(function() {
+ var fontSize = $(this).css("font-size");
+ if (fontSize.includes("pt")) {
+ var ptValue = parseFloat(fontSize); // 取得數值
+ var emValue = ptValue / 12; // 1em = 12pt(一般轉換標準)
+ $(this).css("font-size", emValue + "em");
+ }
+ });
+ $("[style*='font-size']").each(function() {
+ var styleAttr = $(this).attr("style"); // 取得原始 style 屬性字串
+ var match = styleAttr.match(/font-size\s*:\s*(\d+(?:\.\d+)?)pt/i);
+ if (match) {
+ var ptValue = parseFloat(match[1]);
+ var emValue = ptValue / 12;
+ // 替換 style 屬性字串中的 pt 為 em
+ var newStyle = styleAttr.replace(/font-size\s*:\s*\d+(?:\.\d+)?pt/i, `font-size: ${emValue}em`);
+ $(this).attr("style", newStyle);
+ }
+ });
+ //表格scope
+ $("table").each(function() {
+ $(this).find("tr").each(function(rowIndex) {
+ $(this).find("th").each(function(colIndex) {
+ if (rowIndex === 0) {
+ // 第一列的 th,適用於該欄
+ $(this).attr("scope", "col");
+ } else if (colIndex === 0) {
+ // 其他列的第一個 th,適用於該行
+ $(this).attr("scope", "row");
+ }
+ });
+ });
+ });
+ $(".banner-pager button").addClass('banner-pagerbtn');
+ $(".banner-pager button").attr("type","button");
+ $(".banner-pager button").append('下一張');
+ $("button").attr("role", "button");
+ $("select").attr("title","選擇類別");
+ $(".jarallax-video-audio").attr("role", "button");
+ $('button').each(function() {
+ var $this = $(this);
+ if (!$this.attr('title') || $this.attr('title').trim() === '') {
+ $this.attr('title', '按鈕');
+ }
+ });
+ $('img').each(function() {
+ var $this = $(this);
+ if (!$this.attr('alt') || $this.attr('alt').trim() === '') {
+ $this.attr('alt', '這是一張圖片');
+ }
+ });
+ $('img').each(function() {
+ var $this = $(this);
+ if (!$this.attr('title') || $this.attr('title').trim() === '') {
+ $this.attr('title', '這是一張圖片');
+ }
+ });
+ $('img').each(function() {
+ var $this = $(this);
+
+ // 檢查 img 的 alt 屬性是否為 "裝飾圖片"
+ if ($this.attr('alt') === "裝飾圖片" || $this.attr('title') === "裝飾圖片") {
+ // 設定 alt 為空字串
+ $this.attr('alt', '');
+
+ // 移除 title 屬性
+ $this.removeAttr('title');
+ }
+ });
+ $(".w-annc__img-wrap a").each(function () {
+ var $this = $(this);
+ // 確保 內沒有文字節點 (避免重複添加)
+ if ($this.text().trim() === "") {
+ $this.append('公告圖片');
+ }
+ });
+ $(".widget-link__widget-title").each(function () {
+ if ($(this).text().trim() === "") {
+ $(this).append('公告標題');
+ }
+ });
+ $(".sitemenu-title").each(function () {
+ if ($(this).text().trim() === "") {
+ $(this).append('次選單');
+ }
+ });
+ $(".annc-title").each(function () {
+ if ($(this).text().trim() === "") {
+ $(this).append('內頁公告標題');
+ }
+ });
+ $(".event-annc-title").each(function () {
+ if ($(this).text().trim() === "") {
+ $(this).append('內頁活動公告標題');
+ }
+ });
+ $(".show-title").each(function () {
+ if ($(this).text().trim() === "") {
+ $(this).append('內頁活動公告標題');
+ }
+ });
+ $(".w-annc__widget-title").each(function () {
+ if ($(this).text().trim() === "") {
+ $(this).append('公告標題');
+ }
+ });
+ $(".widget-title").each(function () {
+ if ($(this).text().trim() === "") {
+ $(this).append('網路資源標題');
+ }
+ });
+ $(".widget-title").each(function () {
+ if ($(this).text().trim() === "") {
+ $(this).append('網路資源標題');
+ }
+ });
+ $('input').each(function() {
+ var $this = $(this);
+ if (!$this.attr('title') || $this.attr('title').trim() === '') {
+ $this.attr('title', '網內搜尋');
+ }
+ });
+ $('.rucaptcha-image').each(function() {
+ var $button = $(this).next('button'); // 取得緊接在 .rucaptcha-image 之後的 button
+ if ($button.length && !$button.attr('aria-label')) {
+ $button.attr('aria-label', '播放驗證碼語音');
+ }
+ });
+ //有連結目的之所有a標籤加上aria-label和title
+ $('a').each(function () {
+ var $a = $(this);
+ var href = $a.attr('href');
+ if (!href) return;
+
+ var hasSrOnly = $a.find('.sr-only').length > 0;
+
+ // 若有 .sr-only,移除 aria-label 和 title 避免重複朗讀
+ if (hasSrOnly) {
+ $a.removeAttr('aria-label');
+ $a.removeAttr('title');
+ return; // 有 .sr-only 就不做其他處理
+ }
+
+ // ----- aria-label 邏輯 -----
+ if (!$a.attr('aria-label')) {
+ let ariaLabel = '';
+
+ // 加入開啟方式
+ if ($a.attr('target') === '_blank') {
+ ariaLabel += '在新視窗開啟 ';
+ } else if ($a.attr('target') === '_self') {
+ ariaLabel += '在本視窗開啟 ';
+ }
+
+ // 如果包含圖片且有圖片 title
+ if ($a.find('img').length) {
+ const imgTitle = $a.find('img').attr('title');
+ if (imgTitle) ariaLabel = imgTitle;
+ } else {
+ const text = $a.text().trim();
+ if (text) {
+ ariaLabel += text;
+ } else if ($a.children('span').length === 1) {
+ ariaLabel += $a.children('span').text().trim();
+ }
+ }
+
+ if (ariaLabel) {
+ $a.attr('aria-label', ariaLabel);
+ }
+ }
+
+ // ----- title 邏輯 -----
+ if (!$a.attr('title')) {
+ let titleStr = '';
+
+ if ($a.attr('target') === '_blank') {
+ titleStr += '在新視窗開啟 ';
+ } else if ($a.attr('target') === '_self') {
+ titleStr += '在本視窗開啟 ';
+ }
+
+ if ($a.find('img').length) {
+ titleStr = '這是一張照片';
+ } else {
+ const text = $a.text().trim();
+ if (text) {
+ titleStr += text;
+ } else if ($a.children('span').length === 1) {
+ titleStr += $a.children('span').text().trim();
+ }
+ }
+
+ if (titleStr) {
+ $a.attr('title', titleStr);
+ }
+ }
+ });
+ $('a').each(function () {
+ const $link = $(this);
+ const linkText = $link.text().trim();
+
+ $link.find('img').each(function () {
+ const $img = $(this);
+ const altText = $img.attr('alt')?.trim();
+
+ // 如果圖片 alt 是空的,就略過(已符合)
+ if (altText === '') return;
+
+ // 如果圖片 alt 等於文字內容,就將 alt 清空,避免重複
+ if (altText === linkText) {
+ $img.attr('alt', '');
+ }
+ });
+ });
+
+ // 刪除banner-slide的空連結和空連結目標
+ for(var i=0;i<$('.w-ba-banner__slide a').length;i++){
+ if($('.w-ba-banner__slide a').eq(i).attr('href')=="")
+ $('.w-ba-banner__slide a').eq(i).removeAttr('href');
+ if($('.w-ba-banner__slide a').eq(i).attr('target') == "")
+ $('.w-ba-banner__slide a').eq(i).removeAttr('target');
+ };
+ // 幫無標題之iframe加上title
+ for(var i=0;i<$('iframe').length;i++)
+ if($('iframe').eq(i).attr('title')=="" || $('iframe').eq(i).attr('title')== undefined ){
+ if($('iframe').eq(i).attr('src').search('facebook') != -1 )
+ $('iframe').eq(i).attr('title','facebook');
+ else if($('iframe').eq(i).attr('src').search('google') != -1 )
+ $('iframe').eq(i).attr('title','google');
+ else if($('iframe').eq(i).attr('src').search('youtube') != -1 )
+ $('iframe').eq(i).attr('title','youtube');
+ else if($('iframe').eq(i).attr('src').search('twitframe') != -1 )
+ $('iframe').eq(i).attr('title','twitter');
+ else
+ $('iframe').eq(i).attr('title','unknown');
+ };
+ //button是空的就加上內容
+ $('button').each(function() {
+ var $this = $(this);
+ var titleText = $this.attr('title') || '';
+
+ // 檢查 button 是否是空的(沒有可見文字或子元素)
+ if ($this.text().trim() === '' && !$this.children().length && titleText) {
+ // 新增隱藏的 span,內容為 title
+ $this.append('' + titleText + '');
}
});
- $('.nav-level-1>li>a').focus(function(e) {
- e.stopPropagation();
- if ($(this).parent().find('.nav-level-2').hasClass('show')) {
- }else{
- $('.nav-level-2').removeClass('show');
- $(this).parent().find('.nav-level-2').addClass('show');
+ // 刪除空的檔案室
+ var archievelen = $('dd a.i-archive-files-item').length;
+ for(i=archievelen-1;i>=0;i--)
+ if($('dd a.i-archive-files-item').eq(i).html().trim()=="")
+ $('dd a.i-archive-files-item').eq(i).parent('dd').remove();
+ // 刪除具有空連結欄位的橫列
+ for(var i = 0;i < $('*[data-list] tr td a').length ; i++)
+ if($('*[data-list] tr td a').eq(i).html().trim()=="")
+ $('*[data-list] tr td a').eq(i).parent('td').parent('tr').remove();
+ // tab按鍵選到menu,會顯示下層的menu(為了符合無障礙)
+ $('.nav-level-0>li>a').focus(function(e) {
+ e.stopPropagation();
+ $(this).parent().focus();
+ if ($(this).parent().find('.nav-level-1').hasClass('show')) {
+ } else {
+ $('.nav-level-1').removeClass('show');
+ $(this).parent().find('.nav-level-1').addClass('show');
+ }
+ });
+ $('.nav-level-1>li>a').focus(function(e) {
+ e.stopPropagation();
+ if ($(this).parent().find('.nav-level-2').hasClass('show')) {
+ }else{
+ $('.nav-level-2').removeClass('show');
+ $(this).parent().find('.nav-level-2').addClass('show');
+ }
+ });
+ $('show').parent('li').focus();
}
- });
- $('show').parent('li').focus();
- }
- forFreeGo();
+ forFreeGo();
- //header banner setting
- if ( location.href.search('editmode=on') != -1 ) {
- $('.header-banner').css('z-index','2');
- } else {
- $('.header-banner').css({
- 'position': 'relative',
- 'top': '0',
- 'z-index': '-2',
- });
- };
+ //header banner setting
+ if ( location.href.search('editmode=on') != -1 ) {
+ $('.header-banner').css('z-index','2');
+ } else {
+ $('.header-banner').css({
+ 'position': 'relative',
+ 'top': '0',
+ 'z-index': '-2',
+ });
+ };
-//公告頁籤
- function annc_widget_nav() {
- $('.tab_nav').nextAll().addClass('tab_content');
- $('.tab_content').css("display","none");
- $('.tab_content').eq(0).css('display', 'block');
-
- var num = $('.tab_nav li').length;
- $('.tab_content').eq(num).css('display', 'block');
- $('.tab_content').eq(num).nextAll().css('display', 'block');
-
- $('.tab_nav li').off('click').on('click',function() {
- $('.tab_nav li').removeClass('active');
- $(this).addClass('active');
- var fa = $(this).index();
-
- $('.tab_content').attr('style','');
+ //公告頁籤
+ function annc_widget_nav() {
+ $('.tab_nav').nextAll().addClass('tab_content');
$('.tab_content').css("display","none");
- $('.tab_content').eq(fa).css('display','block');
+ $('.tab_content').eq(0).css('display', 'block');
+
var num = $('.tab_nav li').length;
$('.tab_content').eq(num).css('display', 'block');
$('.tab_content').eq(num).nextAll().css('display', 'block');
-});
- var url = window.location.search;
- if (url == "?editmode=on") {
- $('.tab_content').css({'position': 'relative','display':'block'});
-}
-}
- annc_widget_nav();
+ $('.tab_nav li').off('click').on('click',function() {
+ $('.tab_nav li').removeClass('active');
+ $(this).addClass('active');
+ var fa = $(this).index();
-//切換語言停留在同一頁
-if(window.location.pathname!="/")
-$("#en").attr("href",window.location.pathname.replace("zh_tw","en"))
+ $('.tab_content').attr('style','');
+ $('.tab_content').css("display","none");
+ $('.tab_content').eq(fa).css('display','block');
+ var num = $('.tab_nav li').length;
+ $('.tab_content').eq(num).css('display', 'block');
+ $('.tab_content').eq(num).nextAll().css('display', 'block');
+ });
-//檔案室 下載檔案 hover 彈出備註訊息
-$('[data-toggle="tooltip"]').tooltip()
+ var url = window.location.search;
+ if (url == "?editmode=on") {
+ $('.tab_content').css({'position': 'relative','display':'block'});
+ }
+ }
+ annc_widget_nav();
-//下載檔案格式dot pdf分色
-$(".i-archive .label.label-primary").each(function() {
- var downloadType = $(this).text();
- $(this).addClass(downloadType);
-})
+ //切換語言停留在同一頁
+ if(window.location.pathname!="/")
+ $("#en").attr("href",window.location.pathname.replace("zh_tw","en"))
-//檔案室模組 Widget 手風琴
-function extendPanelWidget() {
- var len = $('.panel-title').length;
- var i = -1;
- if (len > 0) {
- // 新增數字到要對應的panel按鈕id及href上面
- for (i = 0; i < len; i++) {
- $('.panel-title:eq(' + i + ') .collapsed').attr('href', '#collapse' + i);
- $('.panel-collapse:eq(' + i + ')').attr('id', 'collapse' + i);
+ //檔案室 下載檔案 hover 彈出備註訊息
+ $('[data-toggle="tooltip"]').tooltip()
+
+ //下載檔案格式dot pdf分色
+ $(".i-archive .label.label-primary").each(function() {
+ var downloadType = $(this).text();
+ $(this).addClass(downloadType);
+ })
+
+ //檔案室模組 Widget 手風琴
+ function extendPanelWidget() {
+ var len = $('.panel-title').length;
+ var i = -1;
+ if (len > 0) {
+ // 新增數字到要對應的panel按鈕id及href上面
+ for (i = 0; i < len; i++) {
+ $('.panel-title:eq(' + i + ') .collapsed').attr('href', '#collapse' + i);
+ $('.panel-collapse:eq(' + i + ')').attr('id', 'collapse' + i);
+ }
}
}
-}
-extendPanelWidget();
+ extendPanelWidget();
-// member show tab scroll
- $('.nav-pills').scrollingTabs({
- scrollToTabEdge: true,
- enableSwiping: true,
- leftArrowContent: [
- '',
- '
'
- ].join(''),
- rightArrowContent: [
- '',
- '
'
- ].join('')
+ // member show tab scroll
+ $('.nav-pills').scrollingTabs({
+ scrollToTabEdge: true,
+ enableSwiping: true,
+ leftArrowContent: [
+ '',
+ '
'
+ ].join(''),
+ rightArrowContent: [
+ '',
+ '
'
+ ].join('')
+ });
+
+
+ }
+
+ $(document).ready(function () {
+ // 處理所有 .fnav-item 裡的
+ $(".fnav-item a").each(function () {
+ const $a = $(this);
+
+ // 如果內部已經有 .sr-only,就略過
+ if ($a.find(".sr-only").length > 0) return;
+
+ // 嘗試從 title 擷取語意文字
+ let label = $a.attr("title") || "";
+
+ // 如果還是空字串,再嘗試用 i 的 title
+ if (!label.trim()) {
+ const iconTitle = $a.find("i").attr("title");
+ if (iconTitle) label = iconTitle;
+ }
+
+ // 如果真的都沒有語意,預設一個 generic label(也可加入 warning log)
+ if (!label.trim()) {
+ label = "操作按鈕";
+ }
+
+ // 加上 title 和 aria-label
+ $a.attr("title", label).attr("aria-label", label);
+
+ // 加上 sr-only 輔助文字
+ $a.append(`${label}`);
+
+ // 確保 icon 不被閱讀器讀取
+ $a.find("i").attr("aria-hidden", "true");
+ $a.find(".icon").attr("aria-hidden", "true");
+ });
});
-
-}
-
-$(document).ready(function () {
- // 處理所有 .fnav-item 裡的
- $(".fnav-item a").each(function () {
- const $a = $(this);
-
- // 如果內部已經有 .sr-only,就略過
- if ($a.find(".sr-only").length > 0) return;
-
- // 嘗試從 title 擷取語意文字
- let label = $a.attr("title") || "";
-
- // 如果還是空字串,再嘗試用 i 的 title
- if (!label.trim()) {
- const iconTitle = $a.find("i").attr("title");
- if (iconTitle) label = iconTitle;
- }
-
- // 如果真的都沒有語意,預設一個 generic label(也可加入 warning log)
- if (!label.trim()) {
- label = "操作按鈕";
- }
-
- // 加上 title 和 aria-label
- $a.attr("title", label).attr("aria-label", label);
-
- // 加上 sr-only 輔助文字
- $a.append(`${label}`);
-
- // 確保 icon 不被閱讀器讀取
- $a.find("i").attr("aria-hidden", "true");
- $a.find(".icon").attr("aria-hidden", "true");
- });
-});
-
-//video js
-$(document).ready(function () {
- if ($(".main-content .video_detail").length > 0) {
- $('.videopagenone').css("display","none");
- $('.videopage').css('display', 'block');
- $('.sitemenu').css("display","none");
- $('span img[alt="HD"]').parent().hide();
- $('span img[alt="觀看人數"]').remove();
- $(".video_detail .view_info span").each(function () {
- var text = $(this).text().trim(); // 取得 裡的文字,去掉前後空格
- var number = text.replace(/\D/g, ""); // 只保留數字部分
- if (number) {
- $(this).text(`・觀看次數:${number}次`); // 更新內容格式
- }
- });
- $(".movie_desc").before('單元介紹
');
- $(".movie_desc").each(function () {
- var decodedHtml = $("").html($(this).text()).html(); // 轉換轉義的 HTML
- $(this).html(decodedHtml); // 設置為真正的 HTML
- });
- $(".video_group_time").each(function () {
- var $this = $(this);
- // 找到對應的 ,並移動到 .video_group_time 內部
- var $q = $this.closest(".imglst_desc").find(".movie_desc q");
- if ($q.length) {
- $this.append($q.clone()); // 將 複製並添加到 .video_group_time
- $q.remove(); // 移除 .movie_desc 裡的
- }
- // 移動 .view_info 到 .video_group_time 的內部
- $this.append($this.siblings(".view_info"));
- // 取得內容並移除 "SystemAdmin | " 前綴
- var text = $this.text().trim();
- var newText = text.replace(/^.*\|\s*/, ""); // 移除 "SystemAdmin | "
- $this.text(newText); // 更新內容
- $(this).insertBefore($(this).closest(".imglst_desc").siblings("h3"));
- });
-
- $(".main-content").css({
- "max-width": "920px",
- "margin": "auto"
- });
- $(".video_box_wrap").css("padding-bottom", "56%");
- $(".video_detail .video_yt_box").insertBefore(".video_detail .video_group_time");
-
- };
- function getYouTubeThumbnail() {
- var $ytThumb = $(".ytp-cued-thumbnail-overlay-image");
- if ($ytThumb.length) {
- var imageUrl = $ytThumb.css("background-image");
- // 檢查背景圖格式:url("https://...")
- var urlMatch = imageUrl.match(/url\(["']?(.*?)["']?\)/);
- var extractedUrl = urlMatch ? urlMatch[1] : null;
- if (extractedUrl) {
- // console.log("成功獲取縮圖:", extractedUrl);
- $(".background").css("background-image", `url("${extractedUrl}")`);
+ //video js
+ $(document).ready(function () {
+ if ($(".main-content .video_detail").length > 0) {
+ $('.videopagenone').css("display","none");
+ $('.videopage').css('display', 'block');
+ $('.sitemenu').css("display","none");
+ $('span img[alt="HD"]').parent().hide();
+ $('span img[alt="觀看人數"]').remove();
+ $(".video_detail .view_info span").each(function () {
+ var text = $(this).text().trim(); // 取得 裡的文字,去掉前後空格
+ var number = text.replace(/\D/g, ""); // 只保留數字部分
+ if (number) {
+ $(this).text(`・觀看次數:${number}次`); // 更新內容格式
+ }
+ });
+ $(".movie_desc").before('影片內容
');
+ $(".movie_desc").each(function () {
+ var decodedHtml = $("").html($(this).text()).html(); // 轉換轉義的 HTML
+ $(this).html(decodedHtml); // 設置為真正的 HTML
+ });
+ $(".video_group_time").each(function () {
+ var $this = $(this);
+ // 找到對應的 ,並移動到 .video_group_time 內部
+ var $q = $this.closest(".imglst_desc").find(".movie_desc q");
+ if ($q.length) {
+ $this.append($q.clone()); // 將 複製並添加到 .video_group_time
+ $q.remove(); // 移除 .movie_desc 裡的
+ }
+ // 移動 .view_info 到 .video_group_time 的內部
+ $this.append($this.siblings(".view_info"));
+ // 取得內容並移除 "SystemAdmin | " 前綴
+ var text = $this.text().trim();
+ var newText = text.replace(/^.*\|\s*/, ""); // 移除 "SystemAdmin | "
+ $this.text(newText); // 更新內容
+ $(this).insertBefore($(this).closest(".imglst_desc").siblings("h3"));
+ });
+
+ $(".main-content").css({
+ "max-width": "920px",
+ "margin": "auto"
+ });
+ $(".video_box_wrap").css("padding-bottom", "56%");
+ $(".video_detail .video_yt_box").insertBefore(".video_detail .video_group_time");
+
+ };
+ function getYouTubeThumbnail() {
+ var $ytThumb = $(".ytp-cued-thumbnail-overlay-image");
+ if ($ytThumb.length) {
+ var imageUrl = $ytThumb.css("background-image");
+ // 檢查背景圖格式:url("https://...")
+ var urlMatch = imageUrl.match(/url\(["']?(.*?)["']?\)/);
+ var extractedUrl = urlMatch ? urlMatch[1] : null;
+ if (extractedUrl) {
+ // console.log("成功獲取縮圖:", extractedUrl);
+ $(".background").css("background-image", `url("${extractedUrl}")`);
+ } else {
+ // console.log("背景圖格式不對,改用影片 ID 生成縮圖");
+ setThumbnailFromVideoId();
+ }
} else {
- // console.log("背景圖格式不對,改用影片 ID 生成縮圖");
+ // console.log("找不到 .ytp-cued-thumbnail-overlay-image,改用影片 ID 生成縮圖");
setThumbnailFromVideoId();
}
- } else {
- // console.log("找不到 .ytp-cued-thumbnail-overlay-image,改用影片 ID 生成縮圖");
- setThumbnailFromVideoId();
}
- }
- function setThumbnailFromVideoId() {
- var $iframe = $("iframe[src*='youtube.com/embed']");
- if ($iframe.length) {
- var src = $iframe.attr("src");
- var videoIdMatch = src.match(/youtube\.com\/embed\/([^?]+)/);
- var videoId = videoIdMatch ? videoIdMatch[1] : null;
+ function setThumbnailFromVideoId() {
+ var $iframe = $("iframe[src*='youtube.com/embed']");
+ if ($iframe.length) {
+ var src = $iframe.attr("src");
+ var videoIdMatch = src.match(/youtube\.com\/embed\/([^?]+)/);
+ var videoId = videoIdMatch ? videoIdMatch[1] : null;
- if (videoId) {
- var fallbackImageUrl = `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`;
- // console.log("透過影片 ID 取得縮圖:", fallbackImageUrl);
- $(".background").css("background-image", `url("${fallbackImageUrl}")`);
- }
- }
- }
- // 嘗試多次加載
- var interval = setInterval(function () {
- if ($(".ytp-cued-thumbnail-overlay-image").length || $("iframe[src*='youtube.com/embed']").length) {
- getYouTubeThumbnail();
- clearInterval(interval);
- }
- }, 1000);
- //改變日期格式
- $(".video_group_time").each(function () {
- var $this = $(this);
- var originalText = $this.text().trim();
- // 把 YYYY-MM-DD 轉換成 M月D日
- var formattedText = originalText.replace(/(\d{4})-(\d{2})-(\d{2})/g, function (match, year, month, day) {
- return parseInt(month, 10) + "月" + parseInt(day, 10) + "日";
- });
- // 找到對應的 ,並複製
- var $q = $this.closest(".video_data").find(".video_desc q").clone();
- // 更新內容並加上
- $this.html(formattedText).append($q);
- });
-
-});
-
-$(document).ready(function () {
- $('.rucaptcha-image').removeAttr('onload');
-
- // 檢查是否已插入過
- if (!$('#captcha_audio').length) {
- const audioButton = $(`
-
- `);
-
- const audio = $('');
-
- $('.rucaptcha-image').after(audioButton, audio);
- }
-});
-
-//萬用表格searchbtn2
-$(document).ready(function () {
- $('.searchbtn2').click(function (event) {
- event.preventDefault(); // 防止預設行為
- $(".searchbox").slideToggle(300, function () {
- updateAriaExpanded();
- });
- $(this).closest('.ken-click').toggleClass('ken-click2');
- });
-
- let triggeredByFocus = false;
-
- function updateAriaExpanded() {
- const isVisible = $(".searchbox").is(":visible");
- $(".searchbtn2").attr("aria-expanded", isVisible ? "true" : "false");
- }
-
- // 預設 aria-expanded 為 false
- $(".searchbtn2").attr("aria-expanded", "false");
-});
- //強制保持全站search展開
-$(document).ready(function () {
-
- //search移位
- function moveSearchIfWide() {
- if ($('.input-search').is(':focus')) return;
-
- if ($(window).width() > 769) {
- // 如果已經在正確位置就不動
- if (!$('.modules-menu-level-0 .searchclass').length) {
- $('.searchclass').appendTo('.header-nav');
- }
- } else {
- if (!$('.navbar-header .searchclass').length) {
- $('.navbar-brand').after($('.searchclass'));
- }
- }
- }
-
- $(document).ready(moveSearchIfWide);
- $(window).on('resize', moveSearchIfWide);
-
- const $searchBox = $('.search-box');
- const $input = $searchBox.find('.input-search');
- const $btn = $('.btn-search');
-
- // 點擊 btn 時:若未展開則展開,展開後才可送出
- $btn.on('click', function (e) {
- if (!$searchBox.hasClass('searching')) {
- e.preventDefault(); // 第一次點擊不送出
- // 延遲讓 Android 不會立即 blur
- setTimeout(() => {
- $searchBox.addClass('searching');
- $input[0].focus(); // 用 DOM 方式較穩
- }, 100);
- } else if (!$input.val().trim()) {
- // 沒有輸入值 → 不送出,focus 回去
- e.preventDefault();
- $input[0].focus();
- }
- // 有輸入值就正常送出
- });
-
- // 點外面收起(無字才收)
- $(document).on('click touchstart', function (e) {
- if (
- !$searchBox.is(e.target) &&
- $searchBox.has(e.target).length === 0 &&
- !$input.val().trim()
- ) {
- $searchBox.removeClass('searching');
- }
- });
-
- // focus 時延遲加 .searching,避免 Android 被打斷
- $input.on('focus', function () {
- setTimeout(() => {
- $searchBox.addClass('searching');
- }, 50);
- });
-
- // blur 時延遲移除 .searching,避免太早發生
- $input.on('blur', function () {
- setTimeout(() => {
- if (!$input.val().trim()) {
- $searchBox.removeClass('searching');
- }
- }, 150);
- });
- });
-// 當文件物件模型(DOM)載入後,執行init函數
-$(document).ready(function() {
- //常用到的js
- // $('.').after($('.'));
- // $('.').before($('.'));
- // $('.').append($('.'));
- // if($('.show-announcement').hasClass('show-announcement')) {
- // $('.').css('', '');
- // }
- $('a').each(function () {
- const $a = $(this);
-
- // 有圖示或圖片就不刪
- if ($a.find('i, img').length > 0) return;
-
- // 沒有任何實際文字內容(去除空白)
- const hasVisibleText = $a.text().trim().length > 0;
-
- // 進一步判斷 span 內部是否完全為空
- const allChildrenEmpty = $a.children().length > 0 && $a.children().toArray().every(child => {
- return $(child).text().trim().length === 0;
- });
-
- // 如果沒有文字內容且子元素全為空,則移除
- if (!hasVisibleText && allChildrenEmpty) {
- $a.remove();
- }
- });
- $('.i-member-pic-wrap a').removeAttr('target');
- function markCheckStatusButton() {
- $('.ask-question').each(function () {
- var $prev = $(this).prev(); // 取得前一個元素
-
- // 如果前一個元素是 且 class 包含 "btn"
- if ($prev.is('a') && $prev.hasClass('btn')) {
- $prev.addClass('CheckStatus'); // 加上 class
- }
- });
- };
- markCheckStatusButton();
-
-
- // 綁定滑動事件
- $(".cycle-slideshow").swipe({
- swipeLeft: function () {
- $(this).cycle("next");
- },
- swipeRight: function () {
- $(this).cycle("prev");
- },
- threshold: 50, // 滑動靈敏度(數值越小越敏感)
- });
-
- $('#check_history_form input[type="submit"][value="Check History"]').addClass('CheckHistory');
- $(".mybooking").append('');
- //內頁dattpp移位
- $('.i-annc__page-title').after($('.sitemenu-wrap2'));
- $('.i-archive-title').after($('.sitemenu-wrap2'));
- $('.page-module-title').after($('.sitemenu-wrap2'));
- $('.box-social-share').before($('.sitemenu-wrap3'));
- $('.box-social-share').before($('.sitemenu-wrap3'));
- $('.box-social-share').before($('.sitemenu-wrap3'));
- $(".member-data2-tr").before($(".show-member .table-striped > tbody > tr:nth-of-type(4)"));
- $(".nav-pills").before($(".show-member .table-striped > tbody > tr:last-child"));
-
- //檔案室手風琴
- $('.panel-title>.collapsed').click(function(){
- $(this).find('.fa').toggleClass("fa-chevron-down");
- $(this).find('.fa').toggleClass("fa-chevron-up");
- });
-
- //背景widget設定
- if ( location.href.search('editmode=on') != -1 ) {
- $('.background').css('z-index','2');
- $('.background').css('position','relative');
- } else {
- $('.background').css('z-index','-1');
- $('.background').css('position','fixed');
- };
- //公告類別顏色
- // $(".w-annc .w-annc__category-wrap").each(function() {
- // var SaveCategory = $(this).find(".w-annc__category").text();
- // $(this).addClass(SaveCategory);
- // })
- // $(".w-annc__item ").each(function() {
- // var SaveCategory2 = $(this).find(".w-annc__category").text();
- // $(this).addClass(SaveCategory2);
- // })
- $(".i-annc__item .i-annc__category-wrap").each(function() {
- var SaveCategory = $(this).find(".i-annc__category").text();
- $(this).addClass(SaveCategory);
- })
- $(".i-annc__item ").each(function() {
- var SaveCategory2 = $(this).find(".i-annc__category").text();
- $(this).addClass(SaveCategory2);
- })
-
- //預約
- if ($(window).width() > 821) {
- $('.form-horizontal').append($('.cancelbooking'));
- $(".hire-ken-click").click(function(){
- // $(".searchbox").slideToggle(300);
- $('.form-horizontal').toggleClass('hire-ken-click2');
- $('.col-lg-5').toggleClass('shadowblock');
- $(".cancelbooking").click(function(){
- $('.form-horizontal').removeClass('hire-ken-click2');
- $('.col-lg-5').removeClass('shadowblock');
- });
- });
- }
- //navrwd移到選單
- if ($(window).width() <769) {
- $('.modules-menu-level-0').after($('.header-nav'));
- }else{
- $('.outdropdowns').before($('.header-nav'));
- };
- $('.sitemenu-vertical .sitemenu-dropdown-toggle').click(function(){
- $('.sitemenu-vertical .dropdown-menu').slideToggle();
- $(".sitemenu-vertical .sitemenu-dropdown-toggle").toggleClass("fa-caret-down");
- $(".sitemenu-vertical .sitemenu-dropdown-toggle").toggleClass("fa-caret-up");
- });
- //頁尾選單開合
- $('.btn-fatfooter').click(function(){
- $('.fatfooter').slideToggle();
- $(".btn-fatfooter .fa-chevron-down").toggleClass("rotate");
- });
-
- $(".menu-toggle").on('click', function() {
- $(this).toggleClass("on");
- $('.menu-section').toggleClass("on");
- $("nav ul").toggleClass('hidden');
- });
- $('.morebken').click(function(){
- $('.list-unstyled>li:nth-child(n+5)').slideToggle();
- $(".morebken .fa-chevron-down").toggleClass("rotate");
- $(".openmorebken").toggleClass("closemorebken");
- });
- //RWD 自動縮放headerbannner
- function headerH() {
- if ($(window).width() < 769) {
- const navH = $('.layout-header .navbar-header').outerHeight();
- $('.header-banner').css('height', navH );
- }
- }
- headerH();
- //downIcon
- $(".downIcon").click(function () {
- var move_to_target = function (stop) {
- var theTop;
- if (stop) {
- // $(".kenjohn").addClass('navFixed');
- if ($('.layout-content2.topcontent').length != 0 && $('.layout-content2.topcontent').offset().top < 400) {
- $('.layout-content2').css('margin-top', $('.kenjohn').height() - $('#orbit-bar').height());
+ if (videoId) {
+ var fallbackImageUrl = `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`;
+ // console.log("透過影片 ID 取得縮圖:", fallbackImageUrl);
+ $(".background").css("background-image", `url("${fallbackImageUrl}")`);
}
- if (parseInt($('.layout-content2').css('margin-top') == 0)) {
- theTop = $('.layout-content2.topcontent').offset().top - $(".kenjohn").position().top - 95;
- } else {
- theTop = $('.layout-content2.topcontent').offset().top - $(".kenjohn").position().top - $(".kenjohn").height() - 95;
+ }
+ }
+ // 嘗試多次加載
+ var interval = setInterval(function () {
+ if ($(".ytp-cued-thumbnail-overlay-image").length || $("iframe[src*='youtube.com/embed']").length) {
+ getYouTubeThumbnail();
+ clearInterval(interval);
+ }
+ }, 1000);
+ //改變日期格式
+ $(".video_group_time").each(function () {
+ var $this = $(this);
+ var originalText = $this.text().trim();
+ // 把 YYYY-MM-DD 轉換成 M月D日
+ var formattedText = originalText.replace(/(\d{4})-(\d{2})-(\d{2})/g, function (match, year, month, day) {
+ return parseInt(month, 10) + "月" + parseInt(day, 10) + "日";
+ });
+ // 找到對應的 ,並複製
+ var $q = $this.closest(".video_data").find(".video_desc q").clone();
+ // 更新內容並加上
+ $this.html(formattedText).append($q);
+ });
+
+ });
+ //rucaptcha-image
+ $(document).ready(function () {
+ $('.rucaptcha-image').removeAttr('onload');
+
+ // 檢查是否已插入過
+ if (!$('#captcha_audio').length) {
+ const audioButton = $(`
+
+ `);
+
+ const audio = $('');
+
+ $('.rucaptcha-image').after(audioButton, audio);
+ }
+ });
+
+ //萬用表格searchbtn2
+ $(document).ready(function () {
+ $('.searchbtn2').click(function (event) {
+ event.preventDefault(); // 防止預設行為
+ $(".searchbox").slideToggle(300, function () {
+ updateAriaExpanded();
+ });
+ $(this).closest('.ken-click').toggleClass('ken-click2');
+ });
+
+ let triggeredByFocus = false;
+
+ function updateAriaExpanded() {
+ const isVisible = $(".searchbox").is(":visible");
+ $(".searchbtn2").attr("aria-expanded", isVisible ? "true" : "false");
+ }
+
+ // 預設 aria-expanded 為 false
+ $(".searchbtn2").attr("aria-expanded", "false");
+ });
+ //強制保持全站search展開
+ $(document).ready(function () {
+
+ //search移位
+ function moveSearchIfWide() {
+ if ($('.input-search').is(':focus')) return;
+
+ if ($(window).width() > 769) {
+ // 如果已經在正確位置就不動
+ if (!$('.modules-menu-level-0 .searchclass').length) {
+ $('.searchclass').appendTo('.header-nav');
}
} else {
- theTop = 5;
+ if (!$('.navbar-header .searchclass').length) {
+ $('.navbar-brand').after($('.searchclass'));
+ }
}
- // console.log(theTop);
- $("html, body").animate({
- scrollTop: theTop
- }, {
- duration: 400, easing: "swing", complete: function () {
- // console.log('finish');
- if (!stop) {
- move_to_target(true);
- }
+ }
+
+ $(document).ready(moveSearchIfWide);
+ $(window).on('resize', moveSearchIfWide);
+
+ const $searchBox = $('.search-box');
+ const $input = $searchBox.find('.input-search');
+ const $btn = $('.btn-search');
+
+ // 點擊 btn 時:若未展開則展開,展開後才可送出
+ $btn.on('click', function (e) {
+ if (!$searchBox.hasClass('searching')) {
+ e.preventDefault(); // 第一次點擊不送出
+ // 延遲讓 Android 不會立即 blur
+ setTimeout(() => {
+ $searchBox.addClass('searching');
+ $input[0].focus(); // 用 DOM 方式較穩
+ }, 100);
+ } else if (!$input.val().trim()) {
+ // 沒有輸入值 → 不送出,focus 回去
+ e.preventDefault();
+ $input[0].focus();
+ }
+ // 有輸入值就正常送出
+ });
+
+ // 點外面收起(無字才收)
+ $(document).on('click touchstart', function (e) {
+ if (
+ !$searchBox.is(e.target) &&
+ $searchBox.has(e.target).length === 0 &&
+ !$input.val().trim()
+ ) {
+ $searchBox.removeClass('searching');
+ }
+ });
+
+ // focus 時延遲加 .searching,避免 Android 被打斷
+ $input.on('focus', function () {
+ setTimeout(() => {
+ $searchBox.addClass('searching');
+ }, 50);
+ });
+
+ // blur 時延遲移除 .searching,避免太早發生
+ $input.on('blur', function () {
+ setTimeout(() => {
+ if (!$input.val().trim()) {
+ $searchBox.removeClass('searching');
+ }
+ }, 150);
+ });
+ });
+ // 當文件物件模型(DOM)載入後,執行init函數
+ $(document).ready(function() {
+ //常用到的js
+ // $('.').after($('.'));
+ // $('.').before($('.'));
+ // $('.').append($('.'));
+ // if($('.show-announcement').hasClass('show-announcement')) {
+ // $('.').css('', '');
+ // }
+
+ if($('.s-annc').length){
+ $(".carousel_images h4").remove();
+ $('.carousel_images').addClass('carousel_images2');
+ $(".carousel_images .w-ba-banner").next("div").find(".button-mid").remove();
+ $(".s-annc__post-wrap").next("hr").remove();
+ // $(".carousel_images").insertAfter(".s-annc__meta-wrap");
+ $('.breadcrumb-wrap').css('display', 'block');
+ // $(".main-content").css({
+ // "max-width": "920px",
+ // "margin": "auto"
+ // });
+ }
+ $('.s-annc__tag-wrap ').after($('.s-annc__post-orbithashtags'));
+ $('a').each(function () {
+ const $a = $(this);
+
+ // 有圖示或圖片就不刪
+ if ($a.find('i, img').length > 0) return;
+
+ // 沒有任何實際文字內容(去除空白)
+ const hasVisibleText = $a.text().trim().length > 0;
+
+ // 進一步判斷 span 內部是否完全為空
+ const allChildrenEmpty = $a.children().length > 0 && $a.children().toArray().every(child => {
+ return $(child).text().trim().length === 0;
+ });
+
+ // 如果沒有文字內容且子元素全為空,則移除
+ if (!hasVisibleText && allChildrenEmpty) {
+ $a.remove();
+ }
+ });
+ $('.i-member-pic-wrap a').removeAttr('target');
+ function markCheckStatusButton() {
+ $('.ask-question').each(function () {
+ var $prev = $(this).prev(); // 取得前一個元素
+
+ // 如果前一個元素是 且 class 包含 "btn"
+ if ($prev.is('a') && $prev.hasClass('btn')) {
+ $prev.addClass('CheckStatus'); // 加上 class
}
});
- }
- move_to_target(false);
- return false;
+ };
+ markCheckStatusButton();
+
+
+ // 綁定滑動事件
+ $(".cycle-slideshow").swipe({
+ swipeLeft: function () {
+ $(this).cycle("next");
+ },
+ swipeRight: function () {
+ $(this).cycle("prev");
+ },
+ threshold: 50, // 滑動靈敏度(數值越小越敏感)
});
- $(window).resize(function() {
- if ($(window).width() <769) {
- $('.modules-menu-level-0').after($('.header-nav'));
- }else{
- $('.outdropdowns').before($('.header-nav'));
+ $('#check_history_form input[type="submit"][value="Check History"]').addClass('CheckHistory');
+ $(".mybooking").append('');
+ //內頁dattpp移位
+ $('.i-annc__page-title').after($('.sitemenu-wrap2'));
+ $('.i-archive-title').after($('.sitemenu-wrap2'));
+ $('.page-module-title').after($('.sitemenu-wrap2'));
+ $('.box-social-share').before($('.sitemenu-wrap3'));
+ $('.box-social-share').before($('.sitemenu-wrap3'));
+ $('.box-social-share').before($('.sitemenu-wrap3'));
+ $(".member-data2-tr").before($(".show-member .table-striped > tbody > tr:nth-of-type(4)"));
+ $(".nav-pills").before($(".show-member .table-striped > tbody > tr:last-child"));
+
+ //檔案室手風琴
+ $('.panel-title>.collapsed').click(function(){
+ $(this).find('.fa').toggleClass("fa-chevron-down");
+ $(this).find('.fa').toggleClass("fa-chevron-up");
+ });
+
+ //背景widget設定
+ if ( location.href.search('editmode=on') != -1 ) {
+ $('.background').css('z-index','2');
+ $('.background').css('position','relative');
+ } else {
+ $('.background').css('z-index','-1');
+ $('.background').css('position','fixed');
};
+ //公告類別顏色
+ // $(".w-annc .w-annc__category-wrap").each(function() {
+ // var SaveCategory = $(this).find(".w-annc__category").text();
+ // $(this).addClass(SaveCategory);
+ // })
+ // $(".w-annc__item ").each(function() {
+ // var SaveCategory2 = $(this).find(".w-annc__category").text();
+ // $(this).addClass(SaveCategory2);
+ // })
+ $(".i-annc__item .i-annc__category-wrap").each(function() {
+ var SaveCategory = $(this).find(".i-annc__category").text();
+ $(this).addClass(SaveCategory);
+ })
+ $(".i-annc__item ").each(function() {
+ var SaveCategory2 = $(this).find(".i-annc__category").text();
+ $(this).addClass(SaveCategory2);
+ })
+ //預約
if ($(window).width() > 821) {
$('.form-horizontal').append($('.cancelbooking'));
$(".hire-ken-click").click(function(){
@@ -1391,201 +1318,303 @@ $(document).ready(function() {
});
});
}
- headerH();
- })
- $(window).scroll(function() {
- initdata1();
- });
- // $(window).scroll(function() {
- // if ($(this).scrollTop() > 100) { /* 要滑動到選單的距離 */
- // $('.outdropdowns').addClass('navFixed'); /* 幫選單加上固定效果 */
- // } else {
- // $('.outdropdowns').removeClass('navFixed'); /* 移除選單固定效果 */
- // }
- // });
- // $('.navbar-brand h2').replaceWith(function() {
- // return $("", {
- // class: this.className,
- // html: $(this).html()
- // });
- // });
- $('#search'). attr('title', '另開新視窗');
- $(window).scroll(function () {
- var windowTop = $(window).scrollTop();
- var windowBottom = windowTop + $(window).innerHeight();
+ //navrwd移到選單
+ if ($(window).width() <769) {
+ $('.modules-menu-level-0').after($('.header-nav'));
+ }else{
+ $('.outdropdowns').before($('.header-nav'));
+ };
+ $('.sitemenu-vertical .sitemenu-dropdown-toggle').click(function(){
+ $('.sitemenu-vertical .dropdown-menu').slideToggle();
+ $(".sitemenu-vertical .sitemenu-dropdown-toggle").toggleClass("fa-caret-down");
+ $(".sitemenu-vertical .sitemenu-dropdown-toggle").toggleClass("fa-caret-up");
+ });
+ //頁尾選單開合
+ $('.btn-fatfooter').click(function(){
+ $('.fatfooter').slideToggle();
+ $(".btn-fatfooter .fa-chevron-down").toggleClass("rotate");
+ });
- function handleAnimationOnce(selector, animationClass, offsetRatio = 0.5) {
- $(selector).each(function () {
- var elementTop = $(this).offset().top;
- var elementHeight = $(this).height();
- var triggerPoint = elementTop + elementHeight * offsetRatio;
-
- if (
- triggerPoint >= windowTop &&
- triggerPoint <= windowBottom &&
- !$(this).hasClass(animationClass)
- ) {
- $(this).addClass(animationClass);
+ $(".menu-toggle").on('click', function() {
+ $(this).toggleClass("on");
+ $('.menu-section').toggleClass("on");
+ $("nav ul").toggleClass('hidden');
+ });
+ $('.morebken').click(function(){
+ $('.list-unstyled>li:nth-child(n+5)').slideToggle();
+ $(".morebken .fa-chevron-down").toggleClass("rotate");
+ $(".openmorebken").toggleClass("closemorebken");
+ });
+ //RWD 自動縮放headerbannner
+ function headerH() {
+ if ($(window).width() < 769) {
+ const navH = $('.layout-header .navbar-header').outerHeight();
+ $('.header-banner').css('height', navH );
+ }
+ }
+ headerH();
+ //downIcon
+ $(".downIcon").click(function () {
+ var move_to_target = function (stop) {
+ var theTop;
+ if (stop) {
+ // $(".kenjohn").addClass('navFixed');
+ if ($('.layout-content2.topcontent').length != 0 && $('.layout-content2.topcontent').offset().top < 400) {
+ $('.layout-content2').css('margin-top', $('.kenjohn').height() - $('#orbit-bar').height());
+ }
+ if (parseInt($('.layout-content2').css('margin-top') == 0)) {
+ theTop = $('.layout-content2.topcontent').offset().top - $(".kenjohn").position().top - 95;
+ } else {
+ theTop = $('.layout-content2.topcontent').offset().top - $(".kenjohn").position().top - $(".kenjohn").height() - 95;
+ }
+ } else {
+ theTop = 5;
}
+ // console.log(theTop);
+ $("html, body").animate({
+ scrollTop: theTop
+ }, {
+ duration: 400, easing: "swing", complete: function () {
+ // console.log('finish');
+ if (!stop) {
+ move_to_target(true);
+ }
+ }
+ });
+ }
+ move_to_target(false);
+ return false;
+ });
+ $(window).resize(function() {
+ if ($(window).width() <769) {
+
+ $('.modules-menu-level-0').after($('.header-nav'));
+ }else{
+ $('.outdropdowns').before($('.header-nav'));
+ };
+
+ if ($(window).width() > 821) {
+ $('.form-horizontal').append($('.cancelbooking'));
+ $(".hire-ken-click").click(function(){
+ // $(".searchbox").slideToggle(300);
+ $('.form-horizontal').toggleClass('hire-ken-click2');
+ $('.col-lg-5').toggleClass('shadowblock');
+ $(".cancelbooking").click(function(){
+ $('.form-horizontal').removeClass('hire-ken-click2');
+ $('.col-lg-5').removeClass('shadowblock');
+ });
+ });
+ }
+ headerH();
+ })
+ $(window).scroll(function() {
+ initdata1();
+ });
+ // $(window).scroll(function() {
+ // if ($(this).scrollTop() > 100) { /* 要滑動到選單的距離 */
+ // $('.outdropdowns').addClass('navFixed'); /* 幫選單加上固定效果 */
+ // } else {
+ // $('.outdropdowns').removeClass('navFixed'); /* 移除選單固定效果 */
+ // }
+ // });
+ // $('.navbar-brand h2').replaceWith(function() {
+ // return $("", {
+ // class: this.className,
+ // html: $(this).html()
+ // });
+ // });
+ $('#search'). attr('title', '另開新視窗');
+ $(window).scroll(function () {
+ var windowTop = $(window).scrollTop();
+ var windowBottom = windowTop + $(window).innerHeight();
+
+ function handleAnimationOnce(selector, animationClass, offsetRatio = 0.5) {
+ $(selector).each(function () {
+ var elementTop = $(this).offset().top;
+ var elementHeight = $(this).height();
+ var triggerPoint = elementTop + elementHeight * offsetRatio;
+
+ if (
+ triggerPoint >= windowTop &&
+ triggerPoint <= windowBottom &&
+ !$(this).hasClass(animationClass)
+ ) {
+ $(this).addClass(animationClass);
+ }
+ });
+ }
+
+ handleAnimationOnce('.hide0', 'animationvisible', 0.1);
+ handleAnimationOnce('.hide1', 'animationvisible1', 0.5);
+ handleAnimationOnce('.hide2', 'animationvisible2', 0.5);
+ handleAnimationOnce('.hide3', 'animationvisible3', 0.5);
+ handleAnimationOnce('.rotate0', 'animationrotate0', 0.5);
+ handleAnimationOnce('.zoomin', 'animationvisible5', 0.5);
+ });
+
+ init();
+ });
+
+ //orbitbar無障礙js
+ $(document).ready(function() {
+ const isEnglish = document.documentElement.lang === 'en';
+
+ if (isEnglish) {
+ $('.navbar-toggle').attr({
+ title: 'menu',
+ 'aria-label': 'menu'
+ });
+ $('label[for="open-orbit-nav"]').attr({
+ title: 'Site search and language menu',
+ 'aria-label': 'Site search and language menu'
+ });
+ $('.mobile-button').attr({
+ title: 'Language menu',
+ 'aria-label': 'Language menu'
+ });
+ } else {
+ $('label[for="open-orbit-nav"]').attr({
+ title: '全站収尋及語言切換選單',
+ 'aria-label': '全站収尋及語言切換選單'
+ });
+ $('.mobile-button').attr({
+ title: '語言切換選單',
+ 'aria-label': '語言切換選單'
});
}
+
- handleAnimationOnce('.hide0', 'animationvisible', 0.1);
- handleAnimationOnce('.hide1', 'animationvisible1', 0.5);
- handleAnimationOnce('.hide2', 'animationvisible2', 0.5);
- handleAnimationOnce('.hide3', 'animationvisible3', 0.5);
- handleAnimationOnce('.rotate0', 'animationrotate0', 0.5);
- handleAnimationOnce('.zoomin', 'animationvisible5', 0.5);
+ $('label[for="open-orbit-login"]').removeAttr('tabindex');
+ $('#orbit-bar').find('li').each(function() {
+ var $li = $(this);
+
+ // 如果
中没有 元素,则为 设置 tabindex="0"
+ if ($li.children('a').length === 0) {
+ $li.attr('tabindex', '0');
+ } else {
+ // 如果 中有 元素,则确保 有 tabindex="0"
+ $li.find('a').attr('tabindex', '0');
+
+ // 确保 不影响焦点管理,移除 的 tabindex
+ $li.removeAttr('tabindex');
+
+ // 如果 被聚焦,自动跳转到 元素
+ $li.on('focus', function() {
+ $(this).find('a').focus();
+ });
+ }
});
-
- init();
-});
-
-//orbitbar無障礙js
-$(document).ready(function() {
- const isEnglish = document.documentElement.lang === 'en';
-
- if (isEnglish) {
- $('.navbar-toggle').attr({
- title: 'menu',
- 'aria-label': 'menu'
- });
- $('label[for="open-orbit-nav"]').attr({
- title: 'Site search and language menu',
- 'aria-label': 'Site search and language menu'
- });
- $('.mobile-button').attr({
- title: 'Language menu',
- 'aria-label': 'Language menu'
- });
- } else {
- $('label[for="open-orbit-nav"]').attr({
- title: '全站収尋及語言切換選單',
- 'aria-label': '全站収尋及語言切換選單'
- });
- $('.mobile-button').attr({
- title: '語言切換選單',
- 'aria-label': '語言切換選單'
- });
+ $('label[for="open-orbit-nav"]').attr('tabindex', '0');
+ // 当屏幕宽度小于 768px 时,将 .orbit-bar-search-sign-language 移动到