Subversion Repositories php-qbpwcf

Rev

Rev 165 | Rev 200 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 165 Rev 174
Line 6639... Line 6639...
6639
		https://developer.mozilla.org/en-US/docs/Web/API/Document/drag_event
6639
		https://developer.mozilla.org/en-US/docs/Web/API/Document/drag_event
6640
		*/
6640
		*/
6641
 
6641
 
6642
		//事件綁定的函式
6642
		//事件綁定的函式
6643
		window.dragEventHandler.func=function(){
6643
		window.dragEventHandler.func=function(){
6644
					
6644
		
6645
			//events fired on the draggable target
6645
			//events fired on the draggable target
6646
			document.addEventListener('drag', function(event) {
6646
			document.addEventListener('drag', function(event) {
6647
 
6647
 
6648
				});
6648
				});
6649
 
6649
 
Line 6778... Line 6778...
6778
		"
6778
		"
6779
		/*
6779
		/*
6780
		導頁的函式:
6780
		導頁的函式:
6781
		*/
6781
		*/
6782
 
6782
 
6783
		//如果沒有 window.redirectURL
6783
		//如果沒有 window.qbpwcf.redirectURL
6784
		if(window.redirectURL===undefined){
6784
		if(window.qbpwcf.redirectURL===undefined){
6785
			
6785
			
6786
			//宣告 window.redirectURL 為空物件
6786
			//宣告 window.qbpwcf.`redirectURL 為空物件
6787
			window.redirectURL={};
6787
			window.qbpwcf.redirectURL={};
6788
 
6788
 
6789
			}//if end
6789
			}//if end
6790
 
6790
 
6791
		//設置 window.redirectURL 變數為 function,參數為 params
6791
		//設置 window.redirectURL 變數為 function,參數為 params
6792
		window.redirectURL=function(params){
6792
		window.qbpwcf.redirectURL=function(params){
6793
 
6793
 
6794
			//如果 params.url 未定義
6794
			//如果 params.url 未定義
6795
			if(params.url===undefined){
6795
			if(params.url===undefined){
6796
 
6796
 
6797
				//設置要回傳的物件
6797
				//設置要回傳的物件
Line 6824... Line 6824...
6824
 
6824
 
6825
				//設置過了 params.countdownSec 秒後要做的事情.
6825
				//設置過了 params.countdownSec 秒後要做的事情.
6826
				setTimeout(function(){
6826
				setTimeout(function(){
6827
					
6827
					
6828
					//導頁到 params.url
6828
					//導頁到 params.url
6829
					window.location.href=params.url;				
6829
					window.location.href=params.url;
6830
					
6830
					
6831
					},params.countdownSec*1000);
6831
					},params.countdownSec*1000);
6832
 
6832
 
6833
				}//else end
6833
				}//else end
6834
 
6834
 
6835
			}//if end		
6835
			}//if end
6836
		";
6836
		";
6837
		$conf["javaScript::toScript"]["jsFunciton"][]=
6837
		$conf["javaScript::toScript"]["jsFunciton"][]=
6838
		"
6838
		"
6839
		/*
6839
		/*
6840
		說明:
6840
		說明:
Line 7567... Line 7567...
7567
			window.qbpwcf.form={};
7567
			window.qbpwcf.form={};
7568
 
7568
 
7569
			}//if end
7569
			}//if end
7570
		
7570
		
7571
		/*
7571
		/*
-
 
7572
		如果回覆的結果是json,且具有error屬性,則會進行需要手動消除的提示.
-
 
7573
		如果回覆的結果是json,且具有content性,則會進行會自動消失的提示.
7572
		如果回覆的結果是json,且具有location屬性,則會進行導頁.
7574
		如果回覆的結果是json,且具有location屬性,則會進行導頁.
7573
		window.qbpwcf.form.fakeScrollingList(),建構子,初始化fakeScrollingList.
7575
		window.qbpwcf.form.fakeScrollingList(),建構子,初始化fakeScrollingList.
7574
		window.qbpwcf.form.eleId,選單呈現的元素 id 為什麼,亦即要點擊的元素其id.
7576
		window.qbpwcf.form.eleId,選單呈現的元素 id 為什麼,亦即要點擊的元素其id,若有設定則忽略targetEle.
7575
		window.qbpwcf.form.targetEle,選單呈現的元素為,若 eleId 為 '' 且該變數不等於 '' 就會採用.
7577
		window.qbpwcf.form.targetEle,選單呈現的元素為,若 eleId 為 '' 且該變數不等於 '' 就會採用,若有設定則忽略eleId.
-
 
7578
		window.qbpwcf.from.autoStart,布林,若eleId與targetEle均未設定,則預設為true,代表要網頁載入後自動觸發;反之設置為false代表不會網頁載入後自動觸發.
7576
		window.qbpwcf.form.closeIcon,關閉按鈕的設定
7579
		window.qbpwcf.form.closeIcon,關閉按鈕的設定.
-
 
7580
		window.qbpwcf.form.disallowClose,布林,true代表不允許關閉選單;預設為false,代表允許關閉選單.
7577
		window.qbpwcf.form.noActionOption,物件,name為顯示的內容;value為選單的數值.
7581
		window.qbpwcf.form.noActionOption,物件,選擇哪些選項不用動作,name為顯示的內容;value為選單的數值.
7578
		window.qbpwcf.form.sendOnClickWhenOnly2options,布林值,預設為false,不啟用;反之為true代表點選元素後就直接送出最後一個選項的數值.啟用條件為window.qbpwcf.form.options只有一個元素.
7582
		window.qbpwcf.form.sendOnClickWhenOnly2options,布林值,預設為false,不啟用;反之為true代表點選元素後就直接送出最後一個選項的數值.啟用條件為window.qbpwcf.form.options只有一個元素.
7579
		window.qbpwcf.form.donotSendFrom,布林值,預設為false,代表選擇了要傳送的項目後,會傳送表單,設置為true代表不會傳送表單只會將選項對應的數值內容交給 window.qbpwcf.form.callback 陣列中的 callback 處理.
7583
		window.qbpwcf.form.donotSendFrom,布林值,預設為false,代表選擇了要傳送的項目後,會傳送表單,設置為true代表不會傳送表單只會將選項對應的數值內容交給 window.qbpwcf.form.callback 陣列中的 callback 處理.
7580
		window.qbpwcf.form.hiddenVar,陣列,每個元素為物件,物件的屬性有name為變數的名稱;value為選單的數值.
7584
		window.qbpwcf.form.hiddenVar,陣列,每個元素為物件,物件的屬性有name為變數的名稱;value為選單的數值.
7581
		window.qbpwcf.form.defaultOption,物件,name為顯示的內容;value為選單的數值.
7585
		window.qbpwcf.form.defaultOption,物件,name為顯示的內容;value為選單的數值.
7582
		window.qbpwcf.form.options,陣列,每個元素為物件,物件的屬性有name為顯示的內容;value為選單的數值.
7586
		window.qbpwcf.form.options,陣列,每個元素為物件,物件的屬性有name為顯示的內容;value為選單的數值.
7583
		window.qbpwcf.form.recPage,字串,為接收要求的網址,預設為當前頁面.
7587
		window.qbpwcf.form.recPage,字串,為接收要求的網址,預設為當前頁面.
7584
		window.qbpwcf.form.sendVarName,傳送表單時的選項對應的變數名稱,預設為'variable'.
7588
		window.qbpwcf.form.sendVarName,傳送表單時的選項對應的變數名稱,預設為'variable'.
7585
		window.qbpwcf.form.callback,針對所選擇的選項內容,要交由哪些函式處理,形態為陣列.
7589
		window.qbpwcf.form.callback,針對所選擇的選項內容,要交由哪些函式處理,形態為陣列.
7586
		window.qbpwcf.form.getTarget(),抓要變成fakeScrolling List的元素.
7590
		window.qbpwcf.form.getTarget(),抓要變成fakeScrolling List的元素.
-
 
7591
		window.qbpwcf.from.replaceCurrentPageToDomResponse,布林,預設為true,代表得到ajax回應為非json的dom時,會將其結果呈現到當前畫面;反之為false.
7587
		window.qbpwcf.form.show(),顯示fake Scrolling list.
7592
		window.qbpwcf.form.active(),啟用fake Scrolling list.
7588
		*/
7593
		*/
7589
		//設置 this 物件,建構子.
7594
		//設置 this 物件,建構子.
7590
		window.qbpwcf.form.fakeScrollingList=function(){
7595
		window.qbpwcf.form.fakeScrollingList=function(){
7591
		
7596
		
7592
			//要用 fake scrolling list 選單呈現的元素 id 為?
7597
			//要用 fake scrolling list 選單呈現的元素 id 為?
7593
			this.eleId='';
7598
			this.eleId='';
7594
		
7599
		
7595
			//要用 fake scrolling list 選單呈現的元素為,若 eleId 為 '' 且該變數不等於 '' 就會採用.
7600
			//要用 fake scrolling list 選單呈現的元素為,若 eleId 為 '' 且該變數不等於 '' 就會採用.
7596
			this.targetEle='';	
7601
			this.targetEle='';
7597
		
7602
		
7598
			//fake scrolling list 預設選單關閉的 叉叉按鈕
7603
			//fake scrolling list 預設選單關閉的 叉叉按鈕
7599
			this.closeIcon='data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K';
7604
			this.closeIcon='data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K';
7600
		
7605
		
7601
			//fake scrolling list 預設選項選到哪個就不傳送表單
7606
			//fake scrolling list 預設選項選到哪個就不傳送表單
Line 7632... Line 7637...
7632
			this.callback=[];
7637
			this.callback=[];
7633
			
7638
			
7634
			//預設的 callback 為 console.log
7639
			//預設的 callback 為 console.log
7635
			this.callback.push(console.log);
7640
			this.callback.push(console.log);
7636
			
7641
			
-
 
7642
			//預設不自動觸發
-
 
7643
			this.autoStart=false;
-
 
7644
			
-
 
7645
			//預設為true,代表得到ajax回應為非json的dom時,會將其結果呈現到當前畫面;
-
 
7646
			this.replaceCurrentPageToDomResponse=true;
-
 
7647
			
-
 
7648
			//預設為false,代表允許關閉選單.
-
 
7649
			this.disallowClose=false;
-
 
7650
			
7637
			//取得目標元素的涵式
7651
			//取得目標元素的涵式
7638
			this.getTarget=function(){
7652
			this.getTarget=function(){
7639
			
7653
			
7640
				//如果沒有設置目標
7654
				//如果有設置目標id
7641
				if(this.eleId===''){
7655
				if(this.eleId!==''){
-
 
7656
				
-
 
7657
					//設置 targetEle
-
 
7658
					this.targetEle=document.getElementById('this.eleId');
7642
				
7659
				
7643
					//元素變數也為空的話
-
 
7644
					if(this.targetEle===''){
7660
					}//if end
7645
					
7661
					
7646
						//提示錯誤
7662
				//如果元素變數為空字串的話
7647
						console.error('Please Defined eleId');
7663
				if(this.targetEle===''){
7648
					
7664
					
7649
						//結束執行
7665
					//設置要自動觸發
7650
						return false;
7666
					this.autoStart=true;
7651
					
7667
					
7652
						}//if end
7668
					}//if end
7653
 
7669
 
7654
					//反之			
7670
				//反之元素如果是body
7655
					else{
7671
				else if(this.targetEle.tagName==='BODY'){
7656
					
7672
				
7657
						//存參考
7673
					//提示錯誤
7658
						var fakeScrollingList=this.targetEle
7674
					console.error('Please define targetEle other than BODY');
7659
					
7675
					
7660
						}//else end
7676
					//結束執行
7661
						
-
 
7662
					}//if end	
7677
					return false;
7663
			
7678
				
7664
				//反之有設定id
-
 
7665
				else{
7679
					}//if end
7666
			
-
 
7667
					//用id取得下拉式選單
-
 
7668
					var fakeScrollingList=document.getElementById(this.eleId);
-
 
7669
				
7680
				
-
 
7681
				//如果要自動觸發
-
 
7682
				if(this.autoStart===true){
-
 
7683
				
-
 
7684
					//建立div元素
-
 
7685
					this.targetEle=document.createElement('div');
-
 
7686
				
7670
					}//else end	
7687
					}//if end
-
 
7688
					
-
 
7689
				//存元素參考
-
 
7690
				var fakeScrollingList=this.targetEle;
7671
					
7691
					
7672
				//回傳點擊要觸發fakeScrollingList效果的元素
7692
				//回傳點擊要觸發fakeScrollingList效果的元素
7673
				return fakeScrollingList;
7693
				return fakeScrollingList;
7674
			
7694
			
7675
				}//function end
7695
				}//function end
7676
			
7696
			
7677
			//顯示 fake scrolling list 
7697
			//啟用 fake scrolling list 
7678
			this.show=function(){
7698
			this.active=function(){
7679
					
7699
				
7680
				//取得要綁定事件的元素
7700
				//取得要綁定事件的元素
7681
				var fakeScrollingList=this.getTarget();
7701
				var fakeScrollingList=this.getTarget();
-
 
7702
				
-
 
7703
				//如果異常
-
 
7704
				if(fakeScrollingList===false){
7682
							
7705
				
-
 
7706
					//結束執行
-
 
7707
					return;
-
 
7708
				
-
 
7709
					}//if end
-
 
7710
				
7683
				//可以下拉的項目用手指頭圖示
7711
				//可以下拉的項目用手指頭圖示
7684
				fakeScrollingList.style.cursor='pointer';
7712
				fakeScrollingList.style.cursor='pointer';
7685
				
7713
				
7686
				//設置 this 給 fakeScrollingList 的 addEventListener 事件
7714
				//設置 this 給 fakeScrollingList 的 addEventListener 事件
7687
				fakeScrollingList.mother=this;
7715
				fakeScrollingList.mother=this;
7688
				
7716
				
7689
				//點擊選單之後
7717
				//點擊選單之後
7690
				fakeScrollingList.addEventListener('click',function(event){
7718
				fakeScrollingList.addEventListener('click',function(event){
7691
												
7719
				
7692
					//取消預設點擊的效果
7720
					//取消預設點擊的效果
7693
					event.preventDefault();
7721
					event.preventDefault();
7694
 
7722
					
7695
					//取得下拉式選單內容
7723
					//取得下拉式選單內容
7696
					var inputSelect=event.target;
7724
					var inputSelect=event.target;
7697
 
7725
 
7698
					//讓下拉式選單趕緊隱藏
7726
					//讓下拉式選單趕緊隱藏
7699
					inputSelect.style.opacity='0';
7727
					inputSelect.style.opacity='0';
Line 7743... Line 7771...
7743
						var opDiv=document.createElement('div');
7771
						var opDiv=document.createElement('div');
7744
 
7772
 
7745
						//讓選項上下置中
7773
						//讓選項上下置中
7746
						opDiv.style.paddingTop='15px';
7774
						opDiv.style.paddingTop='15px';
7747
 
7775
 
-
 
7776
						//如果是不可以點選的選項
-
 
7777
						if(fakeScrollingList.mother.noActionOption.name==opShow && fakeScrollingList.mother.noActionOption.value==opVal){
-
 
7778
						
7748
						//設置選項div的class
7779
							//設置選項div的class
-
 
7780
							opDiv.setAttribute('class','__qbpwcf_inputSelect');
-
 
7781
							
-
 
7782
							}//if end
-
 
7783
 
-
 
7784
						//反之為可以點選的選項
-
 
7785
						else{
-
 
7786
						
-
 
7787
							//設置選項div的class
7749
						opDiv.setAttribute('class','__qbpwcf_inputSelect __qbpwcf_inputSelect_hover');
7788
							opDiv.setAttribute('class','__qbpwcf_inputSelect __qbpwcf_inputSelect_hover');
-
 
7789
							
-
 
7790
							}//else end
7750
						
7791
						
7751
						//設置裡面的文字要換行的時候改用...表示
7792
						//設置裡面的文字要換行的時候改用...表示
7752
						opDiv.style.whiteSpace='nowrap';
7793
						opDiv.style.whiteSpace='nowrap';
7753
						opDiv.style.width='100%';					
7794
						opDiv.style.width='100%';
7754
						opDiv.style.overflow='hidden';
7795
						opDiv.style.overflow='hidden';
7755
						opDiv.style.textOverflow='ellipsis';
7796
						opDiv.style.textOverflow='ellipsis';
7756
						
7797
						
7757
						//偶數欄位
7798
						//偶數欄位
7758
						if(i%2===0)
7799
						if(i%2===0){
7759
						{
7800
						
7760
							//設置選項div底色為藍色
7801
							//設置選項div底色為藍色
7761
							opDiv.style.backgroundColor='CCCCFF';
7802
							opDiv.style.backgroundColor='CCCCFF';
7762
						}
7803
						
-
 
7804
							}//if end
-
 
7805
						
7763
						//反之為奇數欄位
7806
						//反之為奇數欄位
7764
						else
7807
						else{
7765
						{
7808
						
7766
							//設置選項div底色為紅色
7809
							//設置選項div底色為紅色
7767
							opDiv.style.backgroundColor='FFCCCC';
7810
							opDiv.style.backgroundColor='FFCCCC';
7768
						}
7811
						
-
 
7812
							}//else end
7769
 
7813
 
7770
						//解析選項的資訊
7814
						//解析選項的資訊
7771
						var oriOptionsInfo=this.options;
7815
						var oriOptionsInfo=this.options;
7772
 
7816
 
7773
						//建立選項名稱文字節點
7817
						//建立選項名稱文字節點
Line 7867... Line 7911...
7867
 
7911
 
7868
						//不應該跑到的地方
7912
						//不應該跑到的地方
7869
						else{
7913
						else{
7870
 
7914
 
7871
							//debug
7915
							//debug
7872
							console.log('error occur!');
7916
							console.error('error occur!');
7873
 
7917
 
7874
							}//else end
7918
							}//else end
7875
 
7919
 
7876
						}//if end
7920
						}//if end
7877
 
7921
 
Line 7902... Line 7946...
7902
								//取得要移除 scrolling list 的 div
7946
								//取得要移除 scrolling list 的 div
7903
								var divToDel=document.getElementById('scrollingListRootDiv');
7947
								var divToDel=document.getElementById('scrollingListRootDiv');
7904
 
7948
 
7905
								//移除 scrolling list div
7949
								//移除 scrolling list div
7906
								divToDel.remove();
7950
								divToDel.remove();
7907
																
7951
								
7908
								//針對每個要呼叫的 callback func
7952
								//針對每個要呼叫的 callback func
7909
								for(var j=0;j<this.mother.callback.length;j++){
7953
								for(var j=0;j<this.mother.callback.length;j++){
7910
								
7954
								
7911
									//callback
7955
									//callback
7912
									this.mother.callback[j].call(this,clickedValue);
7956
									this.mother.callback[j].call(this,clickedValue);
Line 7961... Line 8005...
7961
								params.url=fakeScrollingList.mother.recPage;
8005
								params.url=fakeScrollingList.mother.recPage;
7962
								params.data=queryStr;
8006
								params.data=queryStr;
7963
								
8007
								
7964
								//取得回應
8008
								//取得回應
7965
								var res = await window.qbpwcf.ajaxP.call(this,params);
8009
								var res = await window.qbpwcf.ajaxP.call(this,params);
7966
																
8010
								
7967
								//取得要移除 scrolling list 的 div
8011
								//取得要移除 scrolling list 的 div
7968
								var divToDel=document.getElementById('scrollingListRootDiv');
8012
								var divToDel=document.getElementById('scrollingListRootDiv');
7969
 
8013
 
7970
								//移除 scrolling list div
8014
								//移除 scrolling list div
7971
								divToDel.remove();
8015
								divToDel.remove();
Line 7975... Line 8019...
7975
								
8019
								
7976
									//callback
8020
									//callback
7977
									fakeScrollingList.mother.callback[j].call(this,res);
8021
									fakeScrollingList.mother.callback[j].call(this,res);
7978
								
8022
								
7979
									}//for end
8023
									}//for end
-
 
8024
								
-
 
8025
								//如果回應是合法的json
-
 
8026
								if(res.compliantJson==true){
-
 
8027
								
-
 
8028
									//如果json的回應有error屬性
-
 
8029
									if(res.json.hasOwnProperty('error')){
-
 
8030
									
-
 
8031
										//警示訊息
-
 
8032
										alert(res.json.error);
7980
									
8033
									
-
 
8034
										}//if end
-
 
8035
									
-
 
8036
									//如果json的回應有content屬性
-
 
8037
									else if(res.json.hasOwnProperty('content')){
-
 
8038
									
-
 
8039
										//警示訊息
-
 
8040
										alert(res.json.content);
-
 
8041
									
-
 
8042
										}//else end
-
 
8043
									
7981
								//如果json的回應有 location屬性
8044
									//如果json的回應有 location屬性
7982
								if(res.json.hasOwnProperty('location')){
8045
									if(res.json.hasOwnProperty('location')){
-
 
8046
									
-
 
8047
										//導頁
-
 
8048
										location.href=res.json.location;
-
 
8049
									
-
 
8050
										}//if end
-
 
8051
								
-
 
8052
									}//if end
-
 
8053
								
-
 
8054
								//反之為非json,且要將dom取代當前頁面的內容
-
 
8055
								else if(replaceCurrentPageToDomResponse==true){
7983
								
8056
								
-
 
8057
									//清空畫面
-
 
8058
									document.replaceChildren();
-
 
8059
									
7984
									//導頁
8060
									//建立html
-
 
8061
									var html=document.createElement('html');
-
 
8062
									
-
 
8063
									//建立head
-
 
8064
									var head=document.createElement('head');
-
 
8065
									
-
 
8066
									//建立body
-
 
8067
									var body=document.createElement('body');
-
 
8068
									
-
 
8069
									//將回應的dom放到body
-
 
8070
									body.append(res.dom);
-
 
8071
									
-
 
8072
									//將head放到html裡面
-
 
8073
									html.append(head);
-
 
8074
									
-
 
8075
									//將body放到html裡面
-
 
8076
									html.append(body);
-
 
8077
									
-
 
8078
									//置換畫面為新的內榮
7985
									location.href=res.json.location;
8079
									document.replaceChildren(html);
7986
								
8080
								
7987
									}//if end							
8081
									}//if end
7988
								
8082
								
7989
								}//if end
8083
								}//if end
7990
 
8084
 
7991
							});//function end
8085
							});//function end
7992
 
8086
 
7993
						}//for end
8087
						}//for end
7994
 
8088
 
-
 
8089
					//如果允許關閉選單
-
 
8090
					if(fakeScrollingList.mother.disallowClose==false){
-
 
8091
					
7995
					//建立 close icon
8092
						//建立 close icon
7996
					var closeIcon = document.createElement('img');
8093
						var closeIcon = document.createElement('img');
7997
 
8094
 
7998
					//設置 close icon 的樣式
8095
						//設置 close icon 的樣式
7999
					closeIcon.style['position']='fixed';
8096
						closeIcon.style['position']='fixed';
8000
					closeIcon.style['top']='15%';
8097
						closeIcon.style['top']='15%';
8001
					closeIcon.style['left']='85%';
8098
						closeIcon.style['left']='85%';
8002
					closeIcon.style['width']='5%';
8099
						closeIcon.style['width']='5%';
8003
					closeIcon.style['min-width']='30px';
8100
						closeIcon.style['min-width']='30px';
8004
					closeIcon.style['max-width']='50px';
8101
						closeIcon.style['max-width']='50px';
8005
					closeIcon.style['cursor']='pointer';
8102
						closeIcon.style['cursor']='pointer';
8006
 
8103
 
8007
					//設置 close icon img 的 src 屬性
8104
						//設置 close icon img 的 src 屬性
8008
					closeIcon.src=fakeScrollingList.mother.closeIcon;
8105
						closeIcon.src=fakeScrollingList.mother.closeIcon;
8009
 
8106
 
8010
					//設置 close icon img 的id
8107
						//設置 close icon img 的id
8011
					closeIcon.id='qbpwcfScrollingListCloseIcon';
8108
						closeIcon.id='qbpwcfScrollingListCloseIcon';
8012
 
8109
 
8013
					//取得 scrollingList 的 root div
8110
						//取得 scrollingList 的 root div
8014
					var slrd=document.getElementById('scrollingListRootDiv');
8111
						var slrd=document.getElementById('scrollingListRootDiv');
8015
 
8112
 
8016
					//將 close icon outer div 放到 scrollingList 的 root div 裡面
8113
						//將 close icon 放到 scrollingList 的 root div 裡面
8017
					document.getElementById('scrollingListRootDiv').appendChild(closeIcon);
8114
						document.getElementById('scrollingListRootDiv').appendChild(closeIcon);
8018
 
8115
 
8019
					//取得 close icon img
8116
						//取得 close icon img
8020
					var closeIcon=document.getElementById('qbpwcfScrollingListCloseIcon');
8117
						var closeIcon=document.getElementById('qbpwcfScrollingListCloseIcon');
8021
 
8118
 
8022
					//新增 close icon img 的點擊事件
8119
						//新增 close icon img 的點擊事件
8023
					closeIcon.addEventListener('click',function(){
8120
						closeIcon.addEventListener('click',function(){
8024
 
8121
 
8025
						//取得要移除 scrolling list 的 div
8122
							//取得要移除 scrolling list 的 div
8026
						var divToDel=document.getElementById('scrollingListRootDiv');
8123
							var divToDel=document.getElementById('scrollingListRootDiv');
8027
 
8124
 
8028
						//移除 scrolling list div
8125
							//移除 scrolling list div
8029
						divToDel.remove();
8126
							divToDel.remove();
8030
 
8127
 
8031
						//復原下拉式選單
8128
							//復原下拉式選單
8032
						inputSelect.style.opacity='unset';
8129
							inputSelect.style.opacity='unset';
8033
 
8130
 
8034
						});//addEventLister
8131
							});//addEventLister
8035
 
8132
 
8036
					//如果有啟用且只有一個選項則自動點擊最後一個選項
8133
						//如果有啟用且只有一個選項則自動點擊最後一個選項
8037
					if(fakeScrollingList.mother.sendOnClickWhenOnly2options && opLen===2){
8134
						if(fakeScrollingList.mother.sendOnClickWhenOnly2options && opLen===2){
8038
					
8135
						
8039
						//debug
8136
							//debug
8040
						console.log('try auto click last option');
8137
							console.log('try auto click last option');
8041
					
8138
						
8042
						//取得選項們的外框
8139
							//取得選項們的外框
8043
						var optionOutBoderDiv=document.querySelector('div#scrollingListRootDiv').children[0].children[0];
8140
							var optionOutBoderDiv=document.querySelector('div#scrollingListRootDiv').children[0].children[0];
8044
					
8141
						
8045
						//點擊最後一個選項
8142
							//點擊最後一個選項
8046
						optionOutBoderDiv.children[1].click();
8143
							optionOutBoderDiv.children[1].click();
-
 
8144
						
-
 
8145
							}//if end
8047
					
8146
					
8048
						}//if end
8147
						}//if end
8049
 
8148
 
8050
					});//function end
8149
					});//function end
8051
					
8150
				
-
 
8151
				//如果要自動觸發
-
 
8152
				if(this.autoStart===true){
-
 
8153
				
-
 
8154
					//觸發之
-
 
8155
					this.targetEle.click();
-
 
8156
				
-
 
8157
					}//if end
-
 
8158
				
8052
				}//function end
8159
				}//function active end
8053
							
8160
				
8054
			}//function end
8161
			}//function end
8055
		
8162
		
8056
		";
8163
		";
8057
		#js function
8164
		#js function
8058
		$conf["javaScript::toScript"]["jsFunciton"][]=
8165
		$conf["javaScript::toScript"]["jsFunciton"][]=
Line 8310... Line 8417...
8310
			
8417
			
8311
		/*
8418
		/*
8312
		設置 window.qbpwcf.ajaxP 函數
8419
		設置 window.qbpwcf.ajaxP 函數
8313
		說明:
8420
		說明:
8314
		傳送ajax,指定傳送前要做什麼事情,然後回傳一個Promise.
8421
		傳送ajax,指定傳送前要做什麼事情,然後回傳一個Promise.
-
 
8422
		await完成後的回傳結果為一物件(res).
-
 
8423
		res.dom,content of html which can be directly access.
-
 
8424
		res.json,json string
-
 
8425
		res.compliantJson,true代表合法的json;false代表不合法的.
-
 
8426
		res.text,plain test
8315
		參數:
8427
		參數:
8316
		params={};
8428
		params={};
8317
		params.method='POST' or 'GET' or 'HEAD' or 'OPTIONS';
8429
		params.method='POST' or 'GET' or 'HEAD' or 'OPTIONS';
8318
		params.headers={name:value};
8430
		params.headers={name:value};
8319
		params.url='url to request';
8431
		params.url='url to request';
Line 8352... Line 8464...
8352
						//debug
8464
						//debug
8353
						if(window.debug){
8465
						if(window.debug){
8354
					
8466
					
8355
							//提示傳送 ajax 前
8467
							//提示傳送 ajax 前
8356
							console.log('before sand request...');
8468
							console.log('before sand request...');
8357
										
8469
							
8358
							}//if end
8470
							}//if end
8359
					
8471
					
8360
						};//funcitno end
8472
						};//funcitno end
8361
				
8473
				
8362
					}//if end
8474
					}//if end
8363
								
8475
				
8364
				//檢查參數 params.data
8476
				//檢查參數 params.data
8365
				if(params.data===undefined){
8477
				if(params.data===undefined){
8366
								
8478
					
8367
					//初始化變數q
8479
					//初始化變數q
8368
					key1='q';
8480
					key1='q';
8369
					
8481
					
8370
					//初始化變數q的數值內容為'test by qbpwcf'
8482
					//初始化變數q的數值內容為'test by qbpwcf'
8371
					v1='test by qbpwcf';
8483
					v1='test by qbpwcf';
8372
					
8484
					
8373
					//初始要傳送的參數
8485
					//初始要傳送的參數
8374
					params.data=key1+'='+encodeURIComponent(v1);
8486
					params.data=key1+'='+encodeURIComponent(v1);
8375
				
8487
				
8376
					}//if end
8488
					}//if end
8377
						
8489
					
8378
				//如果支援 ajax
8490
				//如果支援 ajax
8379
				if(window.XMLHttpRequest){
8491
				if(window.XMLHttpRequest){
8380
 
8492
 
8381
					// code for IE7+, Firefox, Chrome, Opera, Safari
8493
					// code for IE7+, Firefox, Chrome, Opera, Safari
8382
					var xmlhttp=new XMLHttpRequest();
8494
					var xmlhttp=new XMLHttpRequest();
Line 8437... Line 8549...
8437
								//記錄錯誤訊息
8549
								//記錄錯誤訊息
8438
								res.json=exception;
8550
								res.json=exception;
8439
								
8551
								
8440
								}
8552
								}
8441
 
8553
 
-
 
8554
							//設置回應內容為合規的json
-
 
8555
							res.compliantJson=true;
-
 
8556
 
-
 
8557
							//如果json的回應有name屬性
-
 
8558
							if(res.json.hasOwnProperty('name')){
-
 
8559
							
-
 
8560
								//如果是 SyntaxError
-
 
8561
								if(res.json.name=='SyntaxError'){
-
 
8562
								
-
 
8563
									//設置回應內容不為合規的json
-
 
8564
									res.compliantJson=false;
-
 
8565
								
-
 
8566
									}//if end
-
 
8567
							
-
 
8568
								}//if end
-
 
8569
								
8442
							//receive
8570
							//receive
8443
							resolve(res);
8571
							resolve(res);
8444
							
8572
							
8445
							}//if end
8573
							}//if end
8446
						
8574
						
Line 8503... Line 8631...
8503
						//傳送要求
8631
						//傳送要求
8504
						xmlhttp.send(params.data);
8632
						xmlhttp.send(params.data);
8505
 
8633
 
8506
						}//if end
8634
						}//if end
8507
						
8635
						
8508
					//反之data存在資料	
8636
					//反之data存在資料
8509
					else{
8637
					else{
8510
						//傳送要求,POST為空
8638
						//傳送要求,POST為空
8511
						xmlhttp.send();
8639
						xmlhttp.send();
8512
					
8640
					
8513
						}//else end
8641
						}//else end
8514
 
8642
 
8515
					}//if end
8643
					}//if end
8516
 
8644
 
8517
				//反之是 GET 或 HEAD 或 OPTIONS
8645
				//反之是 GET 或 HEAD 或 OPTIONS
8518
				else if(params.method==='GET' || params.method==='HEAD' || params.method==='OPTIONS'){
8646
				else if(params.method==='GET' || params.method==='HEAD' || params.method==='OPTIONS'){
8519
								
8647
				
8520
					//直接傳送要求
8648
					//直接傳送要求
8521
					xmlhttp.send();
8649
					xmlhttp.send();
8522
				
8650
				
8523
					}//else end		
8651
					}//else end
8524
			
8652
			
8525
				});//Promise end
8653
				});//Promise end
8526
								
8654
			
8527
			}//function window.qbpwcf.ajaxP end
8655
			}//function window.qbpwcf.ajaxP end
8528
		";
8656
		";
8529
		#js function
8657
		#js function
8530
		$conf["javaScript::toScript"]["jsFunciton"][]=
8658
		$conf["javaScript::toScript"]["jsFunciton"][]=
8531
		"
8659
		"
Line 9470... Line 9598...
9470
			//如果變數 element 不是 object 或 thumbUrl 跟 oriImg 其中一個不是 string
9598
			//如果變數 element 不是 object 或 thumbUrl 跟 oriImg 其中一個不是 string
9471
			if( typeof(element)!=='object' || typeof(thumbUrl)!=='string' || typeof(oriImgUrl)!=='string' ){
9599
			if( typeof(element)!=='object' || typeof(thumbUrl)!=='string' || typeof(oriImgUrl)!=='string' ){
9472
			
9600
			
9473
				//提示錯誤訊息
9601
				//提示錯誤訊息
9474
				console.error('element is not a object');
9602
				console.error('element is not a object');
9475
							
9603
				
9476
				//提示錯誤訊息
9604
				//提示錯誤訊息
9477
				console.error('thumbUrl is not a string');
9605
				console.error('thumbUrl is not a string');
9478
				
9606
				
9479
				//提示錯誤訊息
9607
				//提示錯誤訊息
9480
				console.error('oriImgUrl is not a string');
9608
				console.error('oriImgUrl is not a string');
Line 9484... Line 9612...
9484
			
9612
			
9485
				}//if end
9613
				}//if end
9486
			
9614
			
9487
			//載入低解析度的圖片,將Promise儲存到res裡面
9615
			//載入低解析度的圖片,將Promise儲存到res裡面
9488
			var res = await fetch(thumbUrl);
9616
			var res = await fetch(thumbUrl);
9489
						
9617
			
9490
			//如果沒有讀取成功
9618
			//如果沒有讀取成功
9491
			if(await res.status!==200){
9619
			if(await res.status!==200){
9492
			
9620
			
9493
				//回傳失敗
9621
				//回傳失敗
9494
				return false;
9622
				return false;
Line 9798... Line 9926...
9798
			params.url=this.url;
9926
			params.url=this.url;
9799
			params.preAc=function(){
9927
			params.preAc=function(){
9800
			
9928
			
9801
				//取得 xmlhttp物件
9929
				//取得 xmlhttp物件
9802
				var xmlhttp=this;
9930
				var xmlhttp=this;
9803
								
9931
				
9804
				//設置過了 params.timeout 秒中後要做的事情.
9932
				//設置過了 params.timeout 秒中後要做的事情.
9805
				params.checkServiceBlockTimeout=setTimeout(function(){
9933
				params.checkServiceBlockTimeout=setTimeout(function(){
9806
				
9934
				
9807
					//中斷連線
9935
					//中斷連線
9808
					xmlhttp.abort();
9936
					xmlhttp.abort();
Line 10614... Line 10742...
10614
				
10742
				
10615
				//隱藏 iframe
10743
				//隱藏 iframe
10616
				iframe.style.display='none';
10744
				iframe.style.display='none';
10617
				
10745
				
10618
				//放置 iframe
10746
				//放置 iframe
10619
				document.body.appendChild(iframe);				
10747
				document.body.appendChild(iframe);
10620
				
10748
				
10621
				//取得 iframe 的 document
10749
				//取得 iframe 的 document
10622
				var documentInIframe=iframe.contentDocument;
10750
				var documentInIframe=iframe.contentDocument;
10623
				
10751
				
10624
				//讓 iframe 開始接收內容
10752
				//讓 iframe 開始接收內容
Line 10635... Line 10763...
10635
				//讓 iframe 接收指定內容	
10763
				//讓 iframe 接收指定內容	
10636
				documentInIframe.write(dom.outerHTML);
10764
				documentInIframe.write(dom.outerHTML);
10637
				
10765
				
10638
				//讓 iframe 結束接收內容
10766
				//讓 iframe 結束接收內容
10639
				documentInIframe.close();
10767
				documentInIframe.close();
10640
								
10768
				
10641
				});//回傳 Promise end
10769
				});//回傳 Promise end
10642
		
10770
		
10643
			}//window.qbpwcf.slide.loadDom end
10771
			}//window.qbpwcf.slide.loadDom end
10644
		
10772
		
10645
		//將多個 dom 給 ifrmae 執行完後,回傳其 document 集合 
10773
		//將多個 dom 給 ifrmae 執行完後,回傳其 document 集合 
Line 10662... Line 10790...
10662
					
10790
					
10663
					//記錄排序順序
10791
					//記錄排序順序
10664
					iframeDoc.order=key;
10792
					iframeDoc.order=key;
10665
					
10793
					
10666
					//儲存
10794
					//儲存
10667
					iframeDocs.push(iframeDoc);				
10795
					iframeDocs.push(iframeDoc);
10668
				
10796
				
10669
					//如果每個都解析成 dom 了
10797
					//如果每個都解析成 dom 了
10670
					if(iframeDocs.length===doms.length){
10798
					if(iframeDocs.length===doms.length){
10671
					
10799
					
10672
						//初始化要尋找的索引
10800
						//初始化要尋找的索引
Line 14391... Line 14519...
14391
		$conf["javaScript::toScript"]["script"]=
14519
		$conf["javaScript::toScript"]["script"]=
14392
		"
14520
		"
14393
		params={};
14521
		params={};
14394
		params.url='".$conf["url"]."';
14522
		params.url='".$conf["url"]."';
14395
		".$countdownSec."
14523
		".$countdownSec."
14396
		window.redirectURL.call(this,params);		
14524
		window.qbpwcf.redirectURL.call(this,params);
14397
		";
14525
		";
14398
		#可省略參數:
14526
		#可省略參數:
14399
		#$conf["onReady"],字串,是否要在網頁完全載入後再執行,"false"為不等載入完就先執行,預設為"true"要等載入完再執行.
14527
		#$conf["onReady"],字串,是否要在網頁完全載入後再執行,"false"為不等載入完就先執行,預設為"true"要等載入完再執行.
14400
		#$conf["onReady"]="true";
14528
		#$conf["onReady"]="true";
14401
		#$conf["globalJs"],字串陣列,為要放入<script>標籤的js全域變數.
14529
		#$conf["globalJs"],字串陣列,為要放入<script>標籤的js全域變數.
Line 14649... Line 14777...
14649
	#$conf["resDiv"]="";
14777
	#$conf["resDiv"]="";
14650
	#參考資料:
14778
	#參考資料:
14651
	#無.
14779
	#無.
14652
	#備註:
14780
	#備註:
14653
	#無.
14781
	#無.
14654
	*/					
14782
	*/
14655
	public static function postDataAttr(&$conf){
14783
	public static function postDataAttr(&$conf){
14656
 
14784
 
14657
		#初始化要回傳的結果
14785
		#初始化要回傳的結果
14658
		$result=array();
14786
		$result=array();
14659
 
14787
 
Line 16732... Line 16860...
16732
if1.contentDocument.getElementById('run');
16860
if1.contentDocument.getElementById('run');
16733
 
16861
 
16734
#設置過了3秒中後要做的事情.
16862
#設置過了3秒中後要做的事情.
16735
setTimeout(function()
16863
setTimeout(function()
16736
{
16864
{
16737
	do something...
16865
	do something
16738
},3000);
16866
},3000);
16739
 
16867
 
16740
#新增網頁元素
16868
#新增網頁元素
16741
var node = document.createElement('li');                // Create a <li> node
16869
var node = document.createElement('li');                // Create a <li> node
16742
var textnode = document.createTextNode('Water');        // Create a text node
16870
var textnode = document.createTextNode('Water');        // Create a text node
Line 17420... Line 17548...
17420
//狀態1代表正常可通訊
17548
//狀態1代表正常可通訊
17421
conn.readyState=1;
17549
conn.readyState=1;
17422
 
17550
 
17423
//建立與當連線成功後
17551
//建立與當連線成功後
17424
conn.onopen = function(e)
17552
conn.onopen = function(e)
17425
{	 
17553
{
-
 
17554
 
17426
}
17555
}
17427
 
17556
 
17428
//當有收到訊息時
17557
//當有收到訊息時
17429
conn.onmessage = function(e)
17558
conn.onmessage = function(e)
17430
{		
17559
{
17431
	//將訊息顯現在console
17560
	//將訊息顯現在console
17432
	console.log(e.data);
17561
	console.log(e.data);
17433
	
17562
	
17434
	//傳送訊息
17563
	//傳送訊息
17435
	conn.send('mag');
17564
	conn.send('mag');
17436
}
17565
}
17437
 
17566
 
17438
//當連線斷開後, 每秒重新嘗試一次.
17567
//當連線斷開後, 每秒重新嘗試一次.
17439
conn.onclose = function(e)
17568
conn.onclose = function(e)
17440
{						
17569
{
17441
	//指定1秒刷新一次
17570
	//指定1秒刷新一次
17442
	setTimeout('window.webSock.connWebSock.call(this)',1000);
17571
	setTimeout('window.webSock.connWebSock.call(this)',1000);
17443
}
17572
}
17444
 
17573
 
17445
//所有內容跑完之後再執行的事件
17574
//所有內容跑完之後再執行的事件
Line 17568... Line 17697...
17568
 
17697
 
17569
//產生uuid
17698
//產生uuid
17570
crypto.randomUUID();
17699
crypto.randomUUID();
17571
//參考資料 https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID
17700
//參考資料 https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID
17572
 
17701
 
-
 
17702
置換網頁整體內容 - start
-
 
17703
 
-
 
17704
//清空當前頁面的dom
-
 
17705
document.replaceChildren();
-
 
17706
 
-
 
17707
//建立html
-
 
17708
var html=document.createElement('html');
-
 
17709
 
-
 
17710
//建立head
-
 
17711
var head=document.createElement('head');
-
 
17712
 
-
 
17713
//建立body
-
 
17714
var body=document.createElement('body');
-
 
17715
 
-
 
17716
//將回應的dom放到body,res.dom為透過ajax取得的回應內容.
-
 
17717
body.append(res.dom);
-
 
17718
 
-
 
17719
//將head放到html裡面
-
 
17720
html.append(head);
-
 
17721
 
-
 
17722
//將body放到html裡面
-
 
17723
html.append(body);
-
 
17724
 
-
 
17725
//置換畫面為新的內榮
-
 
17726
document.replaceChildren(html);
-
 
17727
 
-
 
17728
置換網頁整體內容 - en
-
 
17729
 
-
 
17730
//參考資料
-
 
17731
//https://developer.mozilla.org/en-US/docs/Web/API/Document/replaceChildren
-
 
17732
 
17573
*/
17733
*/
17574
 
17734
 
17575
?>
17735
?>