taigitvnew/assets/javascripts/app.js

1263 lines
44 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;(function($, win, undefined) {
// ECMAScript 5 嚴格模式
'use strict';
// //header fixed在上方
// function initdata1() {
// if ( $('.homebanner').length != 0) {
// $('.layout-header').css('height', '');
// var scrollTop = $(window).scrollTop();
// var scrollBottom = $('html').height() - $(window).height() - $('.layout-header').height();
// if (scrollTop>5 && scrollBottom>0) { /* 要滑動到選單的距離 */
// if (parseInt($('.index-layout-content').css('margin-top'))==0){
// }
// $('.outdropdowns').addClass('navFixed'); /* 幫選單加上固定效果 */
// } else {
// if ($('.homebanner').html().trim() == "") {
// $('.outdropdowns').removeClass('navFixed');
// }else{
// $('.outdropdowns').removeClass('navFixed'); /* 移除選單固定效果 */
// }
// }
// }
// }
// 初始函數: 把所有的程式碼都包在init裡面,方便在之後的jQuery ready 函數裡一次呼叫
function init() {
// 快取一些常用的變數
var doc = document;
var lang = doc.documentElement.lang;
var pageModule = doc.body.getAttribute('data-module');
var resizeTimer = -1;
// 把所有的函數都包在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;
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
// });
// }
// },
// nav: {
// 自適應使用的下拉選單
// setDropdown: function() {
// var $caret1 = $('<i class="dropdown-toggle-icon level-1 fa fa-chevron-down"></i>');
// var $caret2 = $('<i class="dropdown-toggle-icon level-2 fa fa-chevron-down"></i>');
// var $li = null;
// var $this = null;
// var cls = 'active';
// var iconDown = 'fa-chevron-down';
// var iconUp = 'fa-chevron-up';
// // 如果有第二層選單,新增對應的類別到parent元素上
// $('.nav-level-1')
// .parent('li')
// .addClass('has-dropdown level-1');
// // 檢查是否已經有dropdown-toggle-icon這個元素,才不會在resize事件中重覆新增
// if ($('.has-dropdown.level-1 > .dropdown-toggle-icon').length < 1) {
// $caret1.appendTo('.has-dropdown.level-1');
// // 如果有第三層選單,新增對應的類別到parent元素上
// $('.nav-level-2')
// .parent('li')
// .addClass('has-dropdown level-2');
// $caret2.appendTo('.has-dropdown.level-2');
// }
// // 綁定事件到第二、三層下拉選單的按鈕上
// $('.dropdown-toggle-icon.level-1, .dropdown-toggle-icon.level-2').on('vclick', function(e) {
// e.preventDefault();
// $this = $(this);
// $li = $this.parent('li');
// // 拿掉所有選項除了目前點選的選項的 active class 並把icon換成預設的
// $li
// .siblings('li')
// .removeClass(cls)
// .find('.' + iconUp)
// .removeClass(iconUp)
// .addClass(iconDown);
// // 換掉目前選項的icon
// $li
// .find('> i')
// .removeClass(iconDown)
// .addClass(iconUp);
// // 折疊已打開的選項
// if ( $li.hasClass(cls) ){
// $li.removeClass(cls);
// $this.removeClass(iconUp).addClass(iconDown);
// }
// else{
// $li.addClass(cls)
// $this.removeClass(iconDown).addClass(iconUp);
// }
// });
// },
// 移除行動版下拉選單
// removeDropdown: function() {
// var $nav = $('#main-nav');
// $nav
// .find('.dropdown-toggle-icon')
// .remove();
// $nav
// .find('.active')
// .removeClass('active');
// }
// },
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裡面
}
});
},
},
// 移除行動版下拉選單
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 = $('<span class="menu-drop"><i class="dropdown-toggle-icon level-1 fa fa-chevron-down"></i></span>');
var $caret2 = $('<span class="menu-drop"><i class="dropdown-toggle-icon level-2 fa fa-chevron-down"></i></span>');
// 如果有第二層選單,新增對應的類別到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() {
$('.navbar-toggle').click(function(e){
e.preventDefault();
$('.mobile-menu').toggleClass('active');
$('body').toggleClass('noscroll');
$('.mobile-menu .navbar-toggle').removeClass('collapsed');
// $menu.slideToggle();
$('.mobile-menu1 > ul').slideUp(500);
$('.mobile-menu1 > .menu-drop').removeClass('opened');
$('.mobile-menu2 > ul').slideUp(500);
$('.mobile-menu2 > .menu-drop').removeClass('opened');
})
$('.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) {
$('.navbar-toggle').click(function(e){
e.preventDefault();
$('.mobile-menu').toggleClass('active');
$('body').toggleClass('noscroll');
$('.mobile-menu .navbar-toggle').removeClass('collapsed');
// $menu.slideToggle();
$('.mobile-menu1 > ul').slideUp(500);
$('.mobile-menu1 > .menu-drop').removeClass('opened');
$('.mobile-menu2 > ul').slideUp(500);
$('.mobile-menu2 > .menu-drop').removeClass('opened');
})
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'));
$('.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() {
// 幫有連結目的之所有a標籤加上title
for(var i=0;i<$('a').length;i++){
if($('a').eq(i).attr("href") != "" || $('a').eq(i).attr("href") != undefined ){
var titlestr="";
if($('a').eq(i).attr('target')=='_self')
titlestr += '在本視窗開啟 ';
else if($('a').eq(i).attr('target') == '_blank')
titlestr += '在新視窗開啟 ';
if($('a').eq(i).attr('title') == "" || $('a').eq(i).attr('title')==undefined && $('a').eq(i).html().search('</') == -1)
titlestr += $('a').eq(i).html().trim();
else if($('a').eq(i).attr('title') == "" || $('a').eq(i).attr('title') == undefined && $('a').eq(i).find('>span').length==1)
titlestr += $('a').eq(i).find('>span').html().trim();
else if($('a').eq(i).attr('title') == "" || $('a').eq(i).attr('title') == undefined){
try{
if($('a').eq(i).html().trim().split('>').length==2)
titlestr += $('a').eq(i).html().trim().split('>')[1].trim();
else if($('a').eq(i).html().trim().split('>').length==3)
titlestr += $('a').eq(i).html().trim().split('>')[2].trim();
}catch(e){};
}
else
titlestr += $('a').eq(i).attr('title');
if(titlestr.search('<img') != -1)
titlestr = "這是一張照片";
if(titlestr != "")
$('a').eq(i).attr('title',titlestr);
};
};
// 刪除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');
};
// 刪除空的檔案室
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();
}
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',
});
};
//公告頁籤
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','');
$('.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');
});
var url = window.location.search;
if (url == "?editmode=on") {
$('.tab_content').css({'position': 'relative','display':'block'});
}
}
annc_widget_nav();
//切換語言停留在同一頁
if(window.location.pathname!="/")
$("#en").attr("href",window.location.pathname.replace("zh_tw","en"))
//檔案室 下載檔案 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();
// member show tab scroll
$('.nav-pills').scrollingTabs({
scrollToTabEdge: true,
enableSwiping: true,
leftArrowContent: [
'<div class="scrtabs-tab-scroll-arrow custom-scroll-arrow"><i class="fa fa-caret-left" aria-hidden="true"></i>',
'</div>'
].join(''),
rightArrowContent: [
'<div class="scrtabs-tab-scroll-arrow custom-scroll-arrow"><i class="fa fa-caret-right" aria-hidden="true"></i>',
'</div>'
].join('')
});
}
//首頁萬用表格搜尋自創
$(document).ready(function () {
// 如果網址包含 "/dic?",就顯示 .searchbox
if (window.location.pathname.includes('/dic') && window.location.search.includes('?')) {
$('.searchbox').css('display', 'block');
};
function performCombinedSearch() {
const keyword = $('#combined-search').val().trim();
if (keyword === '') return;
const baseURL = '/zh_tw/dic';
const tagURL = `${baseURL}?tag=${encodeURIComponent(keyword)}`;
// 定義要依序檢查的參數 q[1] ~ q[6]
const qParams = [1, 2, 3, 4, 5, 6];
let index = 0;
function tryNextQ() {
if (index >= qParams.length) {
// 如果全部都沒結果,轉向 tag 搜尋
window.location.href = tagURL;
return;
}
const qValue = qParams[index];
const url = `${baseURL}?q[${qValue}]=${encodeURIComponent(keyword)}`;
$.get(url, function (response) {
const hasResult = $(response).find('tbody tr').length > 0;
if (hasResult) {
window.location.href = url;
} else {
index++;
tryNextQ();
}
});
}
tryNextQ();
}
// 綁定搜尋按鈕
$(document).on('click', '#combined-search-btn', performCombinedSearch);
// 綁定 Enter 鍵
$(document).on('keypress', '#combined-search', function (e) {
if (e.which === 13) {
performCombinedSearch();
}
});
});
//萬用表格搜尋自創
$(document).ready(function () {
// 如果網址包含 "/dic?",就顯示 .searchbox
if (window.location.pathname.includes('/dic') && window.location.search.includes('?')) {
$('.searchbox').css('display', 'block');
};
function performCombinedSearch() {
const keyword = $('#combined-search2').val().trim();
if (keyword === '') return;
// 動態抓當前的 URL 路徑
const baseURL = window.location.pathname;
const tagURL = `${baseURL}?tag=${encodeURIComponent(keyword)}`;
// 定義要依序檢查的參數 q[1] ~ q[6]
const qParams = [1, 2, 3, 4, 5, 6];
let index = 0;
function tryNextQ() {
if (index >= qParams.length) {
// 如果全部都沒結果,轉向 tag 搜尋
window.location.href = tagURL;
return;
}
const qValue = qParams[index];
const url = `${baseURL}?q[${qValue}]=${encodeURIComponent(keyword)}`;
$.get(url, function (response) {
const hasResult = $(response).find('tbody tr').length > 0;
if (hasResult) {
window.location.href = url;
} else {
index++;
tryNextQ();
}
});
}
tryNextQ();
}
// 綁定搜尋按鈕
$(document).on('click', '#combined-search-btn2', performCombinedSearch);
// 綁定 Enter 鍵
$(document).on('keypress', '#combined-search2', function (e) {
if (e.which === 13) {
performCombinedSearch();
}
});
// 如果網址包含 tag 參數,就顯示對應文字在 .kentbody 前
const urlParams = new URLSearchParams(window.location.search);
const tag = urlParams.get('tag');
if (tag) {
const $info = $(`<div class="tagsearch">所有包含標籤 #${tag} 的詞</div>`);
$('.kentbody').first().before($info);
}
});
//搜尋結果數量移除
$(document).ready(function () {
$('.universal-table-index').each(function () {
$(this).nextAll('div').each(function () {
const text = $(this).text();
if (text.includes('搜尋結果數量:') || text.includes('Export')) {
$(this).remove();
}
});
});
});
$(document).ready(function() {
if (document.documentElement.lang === 'zh_tw') {
document.documentElement.lang = 'und-hani';
};
$('img.site-logo').each(function() {
var $img = $(this);
var textNode = $img[0].nextSibling;
// 判斷如果是文字節點,就包成 span
if (textNode && textNode.nodeType === 3 && $.trim(textNode.nodeValue) !== "") {
var wrapped = $('<span class="site-title"></span>').text(textNode.nodeValue);
$(textNode).replaceWith(wrapped);
}
});
});
//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(); // 取得 <span> 裡的文字,去掉前後空格
var number = text.replace(/\D/g, ""); // 只保留數字部分
if (number) {
$(this).text(`・觀看次數:${number}次`); // 更新內容格式
}
});
$(".movie_desc").before('<div class="movietitle"><h4>單元介紹</h4></div>');
$(".movie_desc").each(function () {
var decodedHtml = $("<div/>").html($(this).text()).html(); // 轉換轉義的 HTML
$(this).html(decodedHtml); // 設置為真正的 HTML
});
$(".video_group_time").each(function () {
var $this = $(this);
// 找到對應的 <q>,並移動到 .video_group_time 內部
var $q = $this.closest(".imglst_desc").find(".movie_desc q");
if ($q.length) {
$this.append($q.clone()); // 將 <q> 複製並添加到 .video_group_time
$q.remove(); // 移除 .movie_desc 裡的 <q>
}
// 移動 .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("找不到 .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;
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) + "日";
});
// 找到對應的 <q>,並複製
var $q = $this.closest(".video_data").find(".video_desc q").clone();
// 更新內容並加上 <q>
$this.html(formattedText).append($q);
});
});
// 當文件物件模型(DOM)載入後,執行init函數
$(document).ready(function() {
if ($('.spken').is(':empty')) {
$('.verticalhome').css('padding-top', '8em');
};
// //滑鼠移動特效
// $('.centerbox').on('mousemove', function(e) {
// const offset = $(this).offset();
// const width = $(this).width();
// const height = $(this).height();
// const x = e.pageX - offset.left;
// const y = e.pageY - offset.top;
// const moveX = (x - width / 2) / 20;
// const moveY = (y - height / 2) / 20;
// $(this).css('transform', `translate(${moveX}px, ${moveY}px)`);
// });
// $('.centerbox').on('mouseleave', function() {
// $(this).css('transform', 'translate(0px, 0px)');
// });
// //滑鼠移動特效
// $('.video-banner').on('mousemove', function(e) {
// const offset = $(this).offset();
// const width = $(this).width();
// const height = $(this).height();
// const x = e.pageX - offset.left;
// const y = e.pageY - offset.top;
// const moveX = (x - width / 2) / 20;
// const moveY = (y - height / 2) / 20;
// $(this).css('transform', `translate(${moveX}px, ${moveY}px)`);
// });
// $('.video-banner').on('mouseleave', function() {
// $(this).css('transform', 'translate(0px, 0px)');
// });
if($('.s-annc').length){
$(".carousel_images h4").remove();
$('.carousel_images').addClass('carousel_images2');
$(".carousel_images .w-ba-banner").next("div").find(".button-mid").remove();
$('.carousel_images').css('width','100%');
$(".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"
// });
}
//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 -100;
} else {
theTop = $('.layout-content2.topcontent').offset().top - $(".kenjohn").position().top - $(".kenjohn").height() - 100;
}
} 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;
});
$('.voice-player').each(function () {
// 取得 <i> 元素
const icon = $(this).find('i')[0];
if (icon) {
// 取得 <i> 前面的節點
const prevNode = icon.previousSibling;
// 如果是文字節點,則移除
if (prevNode && prevNode.nodeType === 3) {
prevNode.remove();
}
}
});
$('.universal-table-show tr:nth-child(3) .table-txt').after($(' .table-txt .orbit-hash-tag').parent());
//背景widget設定
if ( location.href.search('editmode=on') != -1 ) {
$('.background').css('z-index','2');
$('.background').css('position','relative');
$('.outdropdowns').css('position','relative');
} else {
$('.background').css('z-index','-1');
$('.background').css('position','fixed');
};
$('.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"));
//常用到的js
// $('.').after($('.'));
// $('.').before($('.'));
// $('.').append($('.'));
// if($('.show-announcement').hasClass('show-announcement')) {
// $('.').css('', '');
// }
//公告類別顏色
$(".w-annc .w-annc__category-wrap").each(function() {
var SaveCategory = $(this).find(".w-annc__category").text();
// console.log(SaveCategory);
$(this).addClass(SaveCategory);
})
$(".w-annc__item ").each(function() {
var SaveCategory2 = $(this).find(".w-annc__category").text();
// console.log(SaveCategory);
$(this).addClass(SaveCategory2);
})
$(".i-annc__item .i-annc__category-wrap").each(function() {
var SaveCategory = $(this).find(".i-annc__category").text();
// console.log(SaveCategory);
$(this).addClass(SaveCategory);
})
$(".i-annc__item ").each(function() {
var SaveCategory2 = $(this).find(".i-annc__category").text();
// console.log(SaveCategory);
$(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{
$('.orbit-bar-menu').after($('.header-nav'));
};
//
$(".ken-click").click(function(){
$(".searchbox").slideToggle(300);
$('.ken-click').toggleClass('ken-click2');
$('.fa-chevron-down').toggleClass('rotated');
});
$('.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+16)').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();
$(window).resize(function() {
if ($(window).width() <769) {
$('.modules-menu-level-0').after($('.header-nav'));
}else{
$('.orbit-bar-menu').after($('.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 "<h1>" +$(this).html() + "</h1>";
});
$('#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();
});
//homebanner移除的問題
$(document).ready(function () {
function checkBannerPadding() {
if ($(window).width() > 768) {
if ($('.homebanner').children().length === 0) {
$('.verticalhome').css('padding-top', '10em');
$('.video-banner').css({
'position': 'relative',
'padding-top': '9em',
'top': 'auto'
});
}
} else {
// 畫面小於等於 768 時,還原樣式(可視需要保留或刪除這段)
$('.verticalhome').css('padding-top', '');
$('.video-banner').css({
'position': '',
'padding-top': '',
'top': ''
});
}
}
// 頁面載入時執行一次
checkBannerPadding();
// RWD 螢幕尺寸變動時重新判斷
$(window).on('resize', checkBannerPadding);
});
$(document).ready(function () {
$('.modules-menu-level-1').removeClass('show'); // 預防進來時有被加上
$('li').on('contextmenu', function (e) {
$(this).find('.modules-menu-level-1').removeClass('show');
});
});
//相關詞目欄位的顯示
$(document).ready(function () {
$('.related_entries').each(function () {
var $this = $(this);
if ($this.is(':empty')) {
$this.prev('.table-title').css('display', 'none');
}
});
});
$(document).ready(function () {
// 監控所有 .voice-player 的 status 屬性
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.type === "attributes" && mutation.attributeName === "status") {
var $target = $(mutation.target);
// 如果新的 status 是 "playing"
if ($target.attr("status") === "playing") {
// 將其他所有正在 playing 的 .voice-player reset
$(".voice-player[status='playing']").not($target).each(function() {
$(this)
.removeAttr("status")
.find("i.fa")
.removeClass("fa-pause")
.addClass("fa-play");
});
}
}
});
});
// 對所有現有的 .voice-player 建立 observer
$(".voice-player").each(function() {
observer.observe(this, { attributes: true });
});
});
$(window).load(function(){
$("iframe[src*='google']").attr('title','googleOauth');
});
// 執行 member等高計算,目前改用flexbox故mark掉 by ika 20160105
// $(window).load(function() {
// if ($('.index-member-3').length && $(window).width() > 992) {
// ORBITFRONT.member.equalHeight('.i-member-item-inner');
// }
// });
$(document).ready(function() {
var hashtag = new URLSearchParams(window.location.search).get("orbithashtag");
if (hashtag) {
// 修改 <title>
$("title").text("#" + hashtag + " " + $("title").text());
// 修改 og:title
var ogTitleMeta = $("meta[property='og:title']");
if (ogTitleMeta.length) {
ogTitleMeta.attr("content", "#" + hashtag + " " + ogTitleMeta.attr("content"));
}
}
});
$(document).ready(function() {
// 取得 table 第一列第二欄的值
var tableValue = $(".universal-table-show tbody tr:nth-child(1) td:nth-child(2)").text().trim();
if (tableValue) {
// 修改 <title>,前面加 table 值 + 空格
var originalTitle = $("title").text().trim();
$("title").text(tableValue + " " + originalTitle);
// 同步修改 og:title
var ogTitleMeta = $("meta[property='og:title']");
if (ogTitleMeta.length) {
ogTitleMeta.attr("content", tableValue + " | " + ogTitleMeta.attr("content"));
}
}
});
}(jQuery, window));