PageSourceSearch

https://www.iread.com.tw/home/Redemption

html iread.com.tw collected 2026-09-24 22:59:38 UTC 67,957 bytes, 2,059 lines download raw bytes

1
2
3<!DOCTYPE html>
4<html lang="zh-Hant-TW">
5<head>
6  <meta charset="utf-8" />
7  <meta content="width=device-width, initial-scale=1.0" name="viewport">
8  <meta http-equiv="X-UA-Compatible" content="IE=edge; charset=utf-8" />
9  <meta name='description' content='灰熊愛讀書網路書店,電子書贈送朋友、自己閱讀,走到哪裡都能讀。'><meta name='keywords' content='中文電子書, 繁體電子書, 電子雜誌, 華藝中文電子書, 華文電子書服務, 圖書館電子書, 線上閱讀'><meta property='og:title' content='《電子書兌換/朋友贈送免費兌換》 - 灰熊愛讀書 '> <meta property='og:description' content='灰熊愛讀書:百萬種專業學術、教科考用與暢銷書等繁簡中外文網路書店。提供多元數位內容服務,滿足全方位找書、購書體驗,以知識豐富生活。'><meta property='og:type' content='website'><meta property='og:url' content='https://www.iread.tw/'><meta property='og:image' content='Content/images/iRead_640Logo.jpg'>
10  
11
12  <meta name="viewport" content="width=device-width, initial-scale=1.0">
13
14  <title> 《電子書兌換/朋友贈送免費兌換》 - 灰熊愛讀書  </title>
15
16
17  
17<script>
vendor: 383 bytes, lines 17-19
17
18    (function (i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m) })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
19    ga('create', '
19UA-15412014-1
vendor: 47 bytes, lines 19-20
19', 'iread.com.tw'); ga('send', 'pageview');
20  
20</script>
20
21  <!-- Favicons-->
22  <link href="/Content/images/favicon.png" rel="icon">
23  <link href="/Content/images/apple-touch-icon.png" rel="apple-touch-icon">
24
25  <!-- Google Fonts -->
26  <link href="https://fonts.googleapis.com/css?family=Open+Sans:Lato:300,400,700,300italic,400italic|Raleway:400,300,700" rel="stylesheet">
27  <!-- Main Stylesheet File -->
28  
29    <link type="text/css" href="/Content/css/style.css?v=20260706" rel="stylesheet">
30    <link type="text/css" href="/Content/css/stylev2.css?v=20260706" rel="stylesheet">
31    <!--slider套件-->
32    <link rel="stylesheet" type="text/css" href="/Content/css/slick/slick.css" />
33    <link rel="stylesheet" type="text/css" href="/Content/css/slick/slick-theme.css" />
34
35
36  
37  <link type="text/css" href="/Content/css/order.css?v=20260706" rel="stylesheet">
38  <link type="text/css" href="/Content/css/member.css?v=20260706" rel="stylesheet">
39  <link type="text/css" href="/Content/css/member_eb.css?v=20260706" rel="stylesheet">
40
41
42
43  <!-- jacascript -->
44  
44<script type="text/javascript" src="/Content/js/jquery-3.6.0.min.js"></script>
44
45  
45<script type="text/javascript" src="/Content/js/script.js?v=20260706"></script>
45
46
47  <!--slider-->
48  
48<script type="text/javascript" src="/Content/js/slick/slick.js" charset="utf-8"></script>
48
49
50  
50<script type="text/javascript" src="/Content/js/Airiti.Common.js?v=20260706"></script>
50
51  
51<script type="text/javascript" src="/Content/js/airiti.js?v=20260706"></script>
51
52  
52<script type="text/javascript" src="/Content/js/airiti.iRead.js?v=20260706"></script>
52
53  
53<script type="text/javascript" src="/Content/js/ga.js?v=20260706"></script>
53
54  
55  <style>
56    .navBtn-arrowUP {
57      transform: rotate( 0.5turn );
58      margin-bottom: -5px;
59    }
60  </style>
61
62  
62<script>
63    //Razor寫法
64
65    var IsHome = false;
66    var initWidth = $(window).width();
67    var initHeight = $(window).height();
68    
69    var pMemberNo = '';
70
71    if ("False" == "True") {
72      
73      setInterval(function () {
74        $.ajax({
75          url: '/Home/ajaxCheckSession',
76          success: function (response) {
77            if (response == 'Timeout') {
78              window.location = '/Account/Login?msg=連線逾時,請重新登入';
79            }
80          }
81        });
82      }, 20 * 60 * 1000 + 1000);
83      window.dataLayer = window.dataLayer || [];
84      window.dataLayer.push({
85        'event': 'login',
86        'userId': pMemberNo
87      });
88    }
89    
90
91    var _isLogin = "False";
92    var _sysDate = '20260925';
93    var _num = 0;
94    var _keyCount = 0;
95    var _autoCompleteCount = 0;
96    var _keyword = "";
97    var _autoCompleteID = "";
98    var _isTriggerClick = ""; 
99    var _isShow = 'True'; 
100    var _isKeyup = "true";
101    var _CatLoaded = "false";
102    var _F_CatLoaded = "false";
103    var _cateStatus = 'close';
104    var _f_cateStatus = 'close';
105    var _ProdsArray = new Array();
106    var _EProdsArray = new Array();
107    var _keywords = new Array();
108    var _isCheckTopBanner = false;
109    var _topBannerData = null;
110
111    
112    //#region
113    function keymove(num) {
114      _keyCount = _keyCount + num;
115      if (_keyCount < 1) {
116        _keyCount = 0;
117      } else if (_keyCount >= _autoCompleteCount) {
118        _keyCount = _autoCompleteCount;
119      }
120
121      if (_isTriggerClick == "true") {
122        $('#autoComplete').removeClass("clicked");
123        $('#autoComplete').find("li[data-number='" + _keyCount + "']").trigger("click");
124      }
125
126      $('#keyCount').text(_keyCount);
127    }
128    //#endregion
129    
130    //#region
131    function changeCatType(catType, itemId, callback) {
132      if (itemId == "A") {
133        if (_CatLoaded == "true") {
134          callback();
135        }
136        else {
137          $.ajax({
138            url: '/Home/ajaxCategories',
139            data: { 'CatType': catType, 'level': '', 'ItemId': itemId },
140            success: function (response) {
141              var json = JSON.parse(response);
142              var level1 = json.ReturnData.filter(function (obj) {
143              
144              return obj.level == 1;
145              });
146
147              
148            var strHTML = "";
149              for (var i = 0; i < level1.length; i++) {
150                var n = 0;
151                var CatName = level1[i].CatName;
152                var CatId = level1[i].CatId;
153                if (i < 9) {
154                  n = '0' + (i + 1);
155                } else {
156                  n = (i + 1);
157                }
158
159                strHTML += ' <li> ';
160                strHTML += '   <input type="radio" name="category" checked=""> ';
161                strHTML += '   <span id="categorySubTitle' + CatId + '"> ';
162                strHTML += '   <a href="/Home/Index?CatId=' + CatId + '" data-id="' + CatId + '" title="' + CatName + '"><h3>' + CatName + '</h3></a> ';
163                strHTML += '   </span> ';
164
165                var level2 = json.ReturnData.filter(function (obj) {
166                  return obj.level == 2 && obj.ParentCatId == CatId; 
167              });
168
169                strHTML += '  <ul class="sub-category" id="categoryList_wrap' + CatId + '"> ';
170                strHTML += '   <li class="mobile"> ';
171                strHTML += '      <a href="/Home/Index?CatId=' + CatId + '" data-id="' + CatId + '" title="熱門' + CatName + '">熱門' + CatName + '</a> ';
172                strHTML += '   </li>  ';
173                for (var j = 0; j < level2.length; j++) {
174                  strHTML += '   <li "> ';
175                  strHTML += '      <a href="/CategoryProds/Index?MainCat=' + level2[j].CatId + '&amp;CatName=' + level2[j].CatName + '" class="level2Cate" data-id="' + level2[j].CatId + '">' + level2[j].CatName + '</a> '; 
176                    strHTML += '   </li>  ';
177                }
178                strHTML += '  </ul> ';
179                strHTML += ' </li>  ';
180              }
181              _CatLoaded = "true";
182              $('#categoryFilter_wrap').html(strHTML).promise().done(function () {
183
184              });
185
186              callback();
187            },
188            error: function () {
189
190            }
191          });
192        }
193      }
194      else {
195        if (_F_CatLoaded == "true") {
196          callback();
197        }
198        else {
199          $.ajax({
200            url: '/Home/ajaxCategories',
201            data: { 'CatType': catType, 'level': '2', 'ItemId': itemId },
202            success: function (response) {
203              var json = JSON.parse(response);
204
205              
206              var strHTML = "";
207              for (var i = 0; i < json.ReturnData.length; i++) {
208                var n = 0;
209                var CatName = json.ReturnData[i].CatName;
210                var CatId = json.ReturnData[i].CatId;
211                if (i < 9) {
212                  n = '0' + (i + 1);
213                } else {
214                  n = (i + 1);
215                }
216
217                strHTML += ' <li> ';
218                strHTML += '   <input type="radio" name="category-foreign"> ';
219                strHTML += '   <span> ';
220                strHTML += '     <a href="/Home/Index?CatId=' + CatId + '" ><h3>' + CatName + '</h3></a> ';
221                strHTML += '     <i class="count"></i> ';
222                strHTML += '   </span> ';
223                strHTML += ' </li>  ';
224              }
225              _F_CatLoaded = "true";
226
227                $('#CategoryForeign').html(strHTML).promise().done(function () {
228                });
229
230              callback();
231            },
232            error: function () {
233
234            }
235          });
236        }
237      }
238    }
239    //#endregion
240
241    function closeCate() {
242      $('#catBtn > li').removeClass('navBtnActive');
243      $('#catBtn .navBtn-arrow').removeClass('navBtn-arrowUP');
244      _cateStatus = 'close';
245    }
246    
247    //#region
248    function openCate(pCatId) {
249
250      var CatListWrap = $('#categoryList_wrap' + pCatId);
251      var showClass = "categoryList_wrapFedin";
252      if (document.body.clientWidth <= 768) {
253        showClass = "categoryList_wrap-show";
254      }
255      if (CatListWrap.hasClass(showClass)) {
256        $('#catArea').addClass("collapse");
257        CatListWrap.removeClass(showClass);
258        $('#categorySubTitle' + pCatId).removeClass("categorySubTitle-atv").siblings('.categorySubTitle_toggle').children(".toggleBtn").removeClass('toggleBtn_down').addClass("toggleBtn_up");
259      }
260      else {
261        $('#catArea').removeClass("collapse");
262        $('#catArea ul.categoryList_wrap').removeClass(showClass);
263        $('#catArea div.toggleBtn_down').removeClass('toggleBtn_down').addClass("toggleBtn_up");
264        CatListWrap.addClass(showClass);
265        $('h3.categorySubTitle').removeClass("categorySubTitle-atv")
266        $('#categorySubTitle' + pCatId).addClass("categorySubTitle-atv").siblings('.categorySubTitle_toggle').children(".toggleBtn_up").removeClass('toggleBtn_up').addClass("toggleBtn_down");
267      }
268    }
269    //#endregion
270    
271    //#region
272    function getCartItems(BizType) {
273      $.ajax({
274        url: '/Cart/getCartItems',
275        data: { 'pBizType': BizType },
276        async: false, 
277        success: function (response) {
278          if (BizType == "3") {
279            _EProdsArray = new Array();
280          }
281          else {
282            _ProdsArray = new Array();
283          }
284
285          var cartDetail = JSON.parse(response);
286          
287          if (cartDetail.ReturnData.length == undefined) {
288
289            
290            var propertyNames = Object.getOwnPropertyNames(cartDetail.ReturnData);
291            if (BizType == "3") {
292              _ProdsArray = propertyNames;
293            }
294            else {
295              _EProdsArray = propertyNames;
296            }
297          } else {
298            
299            for (var i = 0; i < cartDetail.ReturnData.length; i++) {
300              if (BizType == "3") {
301                _EProdsArray.push(cartDetail.ReturnData[i].ProdId);
302              }
303              else {
304                _ProdsArray.push(cartDetail.ReturnData[i].ProdId);
305              }
306            }
307          }
308          showCartItemCount();
309        },
310        error: function () {
311        }
312      })
313    }
314    //#endregion
315    
316    //#region
317    function addCartItem(prodId, qty,BizType, callback,errcallback) {
318      $.ajax({
319        url: '/Cart/addCartItem',
320        data: { 'ProdId': prodId, 'Qty': qty, 'pBizType': BizType},
321        success: function (response) {
322          getCartItems(BizType);
323          if (callback != null) {
324            callback();
325          }
326        } ,
327        error: function () {
328          if (errcallback != null) {
329            errcallback();
330          }
331        }
332      });
333    }
334    //#endregion
335
336    
337    //#region
338    function addCartGiftItem(prodId, qty, BizType, callback, errcallback) {
339      $.ajax({
340        url: '/Cart/addCartGiftItem',
341        data: { 'ProdId': prodId, 'Qty': qty, 'pBizType': BizType },
342        success: function (response) {
343          getCartItems(BizType);
344          if (callback != null) {
345            callback();
346          }
347        },
348        error: function () {
349          if (errcallback != null) {
350            errcallback();
351          }
352        }
353      });
354    }
355    //#endregion
356
357    
358      //#region
359      function delCartItem(prodId, BizType, callback, errcallback) {
360        $.ajax({
361          url: '/Cart/delCartItem',
362          data: { 'ProdId': prodId,  'pBizType': BizType },
363          success: function (response) {
364            getCartItems(BizType);
365            if (callback != null) {
366              callback();
367            }
368          },
369          error: function () {
370            if (errcallback != null) {
371              errcallback();
372            }
373          }
374        });
375      }
376    //#endregion
377
378    function showCartItemCount() {
379      let icount = 0;
380
381      if (_ProdsArray != null && _ProdsArray.length >0) {
382        icount = _ProdsArray.length;
383      }
384      if (_EProdsArray != null && _EProdsArray.length > 0) {
385        icount += _EProdsArray.length;
386      }
387
388      if (icount > 0) {
389
390        $('#headerCartCount').text(icount);
391      }
392      else {
393
394        $('#headerCartCount').text("0");
395      }
396
397    }
398    
399    //#region
400    function ajaxSetIsShowSession(status) {
401      $.ajax({
402        type: "POST",
403        url: '/FAQ/ajaxSetIsShowSession',
404        data: { 'status': status },
405        success: function (response) {
406
407        }
408      })
409    }
410    //#endregion
411
412    function getShowDiscount(pDiscount) {
413      var discount ="";
414
415      try {
416        discount = String(pDiscount);
417        if (pDiscount < 100) {
418          if (pDiscount >= 10) {
419            if (discount.substring(1, 2) == "0") {
420              discount = discount.substring(0, 1);
421            }
422          }
423          else {
424            discount = "0." + discount;
425          }
426        }
427        else {
428          discount = "100";
429        }
430      }
431      catch (err) {
432        discount = pDiscount;
433      }
434      return discount;
435    }
436
437    function getShowAmount(pAmount) {
438      var amount = "";
439
440      try {
441        amount = String(pAmount);
442        if (pAmount > 1000) {
443          amount = amount.substring(0, amount.length - 3) + "," + amount.slice(-3);
444        }
445      }
446      catch (err) {
447        amount = pAmount;
448      }
449      return amount;
450    }
451
452    function toBookcase(pGroup) {
453      location.href = "/Account/toBookcase" + (pGroup == undefined ? "" :"?BCGroup=" + pGroup);
454    }
455
456    function saveFav(ProdId, istatus, srcobj) {
457
458      if (_isLogin == 'True') {
459        let requestVerificationToken = $('input[name="__RequestVerificationToken"]', $('#__AjaxAntiForgeryForm')).val();
460        $.ajax({
461          type: "POST",
462          url: '/Cart/saveMyWishList',
463          data: {
464            'prodID': ProdId,
465            'ItemStatus': istatus,
466            __RequestVerificationToken: requestVerificationToken
467          },
468          success: function (response) {
469
470            let result = JSON.parse(response);
471            if (result == '1') {
472              if (istatus == "P") {
473                srcobj.addClass("favoritesWrap-atv");
474              }
475              else {
476                srcobj.removeClass("favoritesWrap-atv");
477              }
478            }
479            else {
480              alert("處理錯誤");
481            }
482          },
483          error: function () {
484            alert("錯誤");
485          }
486        });
487      }
488      else {
489        location.href = "/Account/Login";
490      }
491
492    }
493
494    function openViewer(EProdId, IsPreview) {
495      let requestVerificationToken = $('input[name="__RequestVerificationToken"]', $('#__AjaxAntiForgeryForm')).val();
496      $.ajax({
497        type: "POST",
498        url: '/Detail/getViewerPath',
499        data: {
500          'pEProdId': EProdId,
501          'pIsPreview': IsPreview,
502          __RequestVerificationToken: requestVerificationToken
503        },
504        success: function (response) {
505          if (response!= '' && response.substring(0, 3) != 'ERR') {
506            window.open(response);
507          }
508          else {
509            alert("無法開啟試閱");
510          }
511        },
512        error: function () {
513          alert("錯誤");
514        }
515      });
516    }
517
518    function goToDetail(ProdId, biztype) {
519
520      let url = "/Detail/ProdDetail/" + ProdId;
521      if (biztype != undefined && biztype != "")
522        url += "?biztype=" + biztype;
523      location.href = url;
524    }
525
526    function checkEbookPreview(objProd, MemAgeType) {
527
528      try {
529        if (objProd.EbookIsPreview == "Y" && !(objProd.ContentDegree == "4" && MemAgeType != "A")) {
530          return true;
531        }
532      }
533      catch (e) {
534        console.log(e);
535      }
536
537      return false;
538    }
539
540    //#region
541    function getMemberKeywords() {
542      if (_isLogin == 'True') {
543
544        $.ajax({
545          url: '/home/getMemberKeywords',
546          async: true,
547          success: function (response) {
548
549            var memKeywords = JSON.parse(response);
550            _keywords = memKeywords;
551            let strHTML = "";
552            if (memKeywords != null && memKeywords.length > 0) {
553
554              for (let i = 0; i < memKeywords.length; i++) {
555                strHTML += '<li>';
556                strHTML += '  <span class="icon-wrap clock">';
557                strHTML += '    <i></i>';
558                strHTML += '  </span>';
559                strHTML += '<p class="search-text" onclick="goSearch(\'' + memKeywords[i].Keyword +  '\')">' + memKeywords[i].Keyword + '</p>';
560                strHTML += '<span class="icon-wrap close" onclick="clearKeyword(\'' + memKeywords[i].SeqNo + '\',\'' + memKeywords[i].Keyword + '\')"><i></i></span>';
561                strHTML += '</li>'
562              }
563            }
564            $("#searchHistory").html(strHTML);
565            $("div.toolbar-wrap").removeClass("no-recode");
566          },
567          error: function () {
568          }
569        });
570      }
571    }
572    //#endregion
573
574    function clearKeyword(SeqNo, Keyword) {
575      if (_isLogin == 'True' && _keywords.length > 0) {
576        $.ajax({
577          url: '/home/clearMemberKeywords',
578          data: {'SeqNo': SeqNo, 'Keyword': Keyword },
579          async: true,
580          success: function (response) {
581            getMemberKeywords();
582          },
583          error: function () {
584
585          }
586        });
587      }
588    }
589
590    function getTopBanner() {
591      if (document.body.clientWidth < 1025) {
592        $('#top_banner_area').hide();
593        return;
594      }
595      if (!_isCheckTopBanner) {
596        
597        //#region
598        $.ajax({
599          url: '/Home/ajaxHeaderImagesLinks',
600          data: { 'BannerLayout': 'T', 'CatId': 'Home' },
601          success: function (response) {
602            var json = JSON.parse(response);
603            _isCheckTopBanner = true;
604            if (json.ReturnData == null) {
605              $('#top_banner_area').hide();
606              return;
607            }
608            _topBannerData = json.ReturnData;
609            showTopBanner();
610          },
611          error: function () {
612            //alert('error')
613          }
614        })
615        //#endregion
616      }
617      else {
618        showTopBanner();
619      }
620    }
621
622    function showTopBanner() {
623
624      if (_topBannerData != null) {
625        $('#top_banner_area .bannerTop').css('background-image', 'url(' + _topBannerData.FilePath + ')');
626        $('#top_banner_area > a').prop('href', _topBannerData.ImgLink);
627        
628        $('#top_banner_area').css('background-color', '#' + _topBannerData.BgColor.replace('#', ''));
629        if (_topBannerData.ImgLink == '' || _topBannerData.ImgLink == null) {
630          $('#top_banner_area > a').css('cursor', 'default');
631        }
632
633        
634        $('#top_banner_area').show().addClass("active");
635      }
636      else {
637        $('body').removeClass("not-scroll");
638      }
639    }
640
641    function goSearch(keyword) {
642      if (keyword != '') {
643        location.href = '/CategoryProds/Index?SearchKeyword=' + encodeURIComponent(keyword);
644      }
645
646    }
647    $(document).ready(function () {
648      $("label[for='advancedToggle']").on('click', function () {
649        if (document.body.clientWidth > 768) {
650          $('#searchBar').toggleClass('focus');
651        }                
652      });
653      $('body').addClass('not-scroll');
654      $(window).on('scroll', function (e) {
655        if ($(window).scrollTop() > 88) {
656          $('body').removeClass('not-scroll');
657        }
658        else {
659          $('body').addClass('not-scroll');
660        }
661      });
662
663      
664      var keyword = "";
665      $('button.search-btn,button.enter-btn').on('click', function () {
666
667        if (_keyCount == 0) {
668          keyword = $('#searchBar').val().trim();
669          if (keyword != '') {
670            goSearch(keyword);
671          }
672        } else {
673          location.href = "/Detail/ProdDetail/" + _autoCompleteID;
674        }
675      })
676
677
678      
679      $('#searchBar').on('keyup', function (e) {
680        if (e.key == 'Enter' || e.keyCode == 13) {
681          
682          //#region
683          $('button.search-btn').trigger('click');
684          _isTriggerClick = "false";
685          _isKeyup = "false";
686          //#endregion
687        }
688        
689        else if ($('#searchBar').val() == "") {
690          _keyCount = 0;
691          _num = 0;
692          _isTriggerClick = "false";
693          _isKeyup = "true";
694          keymove(_num);
695
696          //$('#autoComplete').remove();
697          $('#autoComplete').html('');
698          $('div.toolbar-wrap').removeClass('has-match');
699
700        }
701        else {
702          
703          if (e.key == 'Backspace' || e.keyCode == 8) {
704            _keyCount = 0;
705            _num = 0;
706            _isTriggerClick = "false";
707            _isKeyup = "true";
708            keymove(_num);
709          }
710
711          
712          //#region
713          if (IsHome == true) {
714            sessionStorage.setItem("HomeScroll", undefined);
715          }
716          $.ajax({
717            url: '/CategoryProds/SearchAutoComplete',
718            type: 'POST',
719            data: {
720              "keyword": $('#searchBar').val(),
721            },
722            success: function (response) {
723              var json = JSON.parse(response);
724              
725              var strHTML = '';
726
727              for (var i = 0; i < json.DataList.length; i++) {
728                strHTML += '<li data-number="' + (i + 1) + '" data-prodid="' + json.DataList[i].ProdId + '" class="autoComLi">';
729                strHTML +='<span class="icon-wrap search"><i></i></span>';
730                strHTML += '<p>';
731                strHTML += json.DataList[i].ProdName;
732                strHTML += '</p>';
733                strHTML += '</li>';
734              }
735              
736              _autoCompleteCount = json.DataList.length;
737
738              
739              $('#autoComplete').html("");
740
741              
742              if (json.DataList.length > 0) {
743                $('#autoComplete').html(strHTML).promise().done(function () {
744                  $('div.toolbar-wrap').addClass('has-match');
745                  
746                  $('#autoComplete').find('li').hover(
747                    
748                    //#region
749                    
750                    function () {
751                      if ($('#autoComplete').hasClass("clicked")) {
752                        $('#autoComplete').removeClass("clicked");
753                        _isTriggerClick = "false";
754                        _keyCount = 0;
755                      }
756                    },
757                    
758                    function () {
759                      
760                      if (!$('#autoComplete').hasClass("clicked")) {
761                      }
762                    }
763                    //#endregion
764                  ).off('click').on('click', function () {
765                    
766                    //#region
767                    
768                    $('#autoComplete').addClass("clicked"); 
769
770                    
771                    _keyCount = parseInt($(this).attr("data-number"));
772                    _autoCompleteID = $(this).attr("data-prodid");
773                    if (_isTriggerClick != "true") {
774                      location.href = "/Detail/ProdDetail/" + _autoCompleteID;
775                    }
776                    //#endregion
777                  })
778
779                  
780                  $('#searchBar').off("keyup.move").on('keyup.move',function (e) {
781                    if (e.key == 'ArrowUp' || e.keyCode == 38) {
782                      
783                      _num = -1;
784                      _isTriggerClick = "true";
785                    } else if (e.key == 'ArrowDown' || e.keyCode == 40) {
786                      _num = +1;
787                      _isTriggerClick = "true";
788                    } else {
789                      _num = 0;
790                      _keyCount = 0;
791                      _isTriggerClick = "false";
792                    }
793                  })
794                  keymove(_num);
795                });
796              }
797            }
798          });
799          //#endregion
800        }
801      }).on('focus', function () {
802
803        if ($('#searchBar').val() == "") {
804
805        }
806
807      });
808
809      $('#advancedBtn').on('click', function () {
810        let prodName = $('#advancedTitle').val().trim();
811        let authorName = $('#advancedAuthor').val().trim();
812        let isbn = $('#advancedIsbn').val().trim();
813        let pubName = $('#advancedPublisher').val().trim();
814
815        if (prodName == '' && authorName == '' && isbn == '' && pubName == '') {
816          alert('請輸入查詢條件');
817        }
818        else {
819          location.href = '/CategoryProds/Index?skp=' + encodeURIComponent(prodName) + '&ska=' + encodeURIComponent(authorName) + '&ski=' + encodeURIComponent(isbn) + '&skpu=' + encodeURIComponent(pubName) + '&filed=9&Page=1';
820
821        }
822        return false;
823      });
824
825      $('#advancedClaerBtn').on('click', function () {
826        $('#advancedTitle').val('');
827        $('#advancedAuthor').val('');
828        $('#advancedIsbn').val('');
829        $('#advancedPublisher').val('');
830        return false;
831      });
832
833      
834      //#region
835      $('button.btn.logout').on('click', function () {
836        $.ajax({
837          url: '/Account/Logout',
838          success: function (response) {
839
840          }
841        });
842
843        return false;
844      });
845
846      $('button.btn-wrap.goto-member').on('click', function () {
847        location.href = '/Member';
848      });
849
850      //#endregion
851
852      if (_isLogin == "True") {
853        $('body').addClass('logined');
854      }
855      
856      getCartItems("1");
857      getCartItems("3");
858      getMemberKeywords();
859      getTopBanner();
860
861      
862      //#region
863      $.ajax({
864        url: '/Home/ajaxActHomeBanner',
865        success: function (response) {
866          var json = JSON.parse(response);
867          if (json.ReturnData == null) return;
868          var strHTML = "";
869
870          for (var i = 0; i < json.ReturnData.length; i++) {
871            strHTML += '<li >';
872            strHTML += '  <a href="/Marketing/?ActID=' + json.ReturnData[i].ActID + '" title="' + json.ReturnData[i].ActName + '">';
873            if (i < 1) {
874              strHTML += '    <img src="' + json.ReturnData[i].ActHomeBanner + '" alt="' + json.ReturnData[i].ActName + '" >';
875            }
876            else {
877              strHTML += '    <img src="' + json.ReturnData[i].ActHomeBanner + '" alt="' + json.ReturnData[i].ActName + '" loading="lazy">';
878            }
879            strHTML += '  </a>';
880            strHTML += '</li>';
881          }
882
883          $('ul.event-list').html(strHTML);
884        },
885        error: function () {
886
887        }
888      })
889      //#endregion
890
891      
892      //#region
893      $.ajax({
894        url: '/Home/ajaxNews',
895        success: function (response) {
896          var json = JSON.parse(response);
897          if (json.ReturnValue != OpReturnValue.Correct) return;
898          var strHTML = "";
899
900          for (var i = 0; i < json.ReturnData.length; i++) {
901            strHTML += ' <li> ';
902            strHTML += '  <p>' + json.ReturnData[i].NewsContent + '</p>';
903            strHTML += ' </li>';
904          }
905
906          $('.news-list').html(strHTML);
907
908
909          
910          if (document.body.clientWidth > 768) {
911            if (json.ReturnData.length > 0 && _isShow == 'True' && getCookie('firstNews') != json.ReturnData[0].NewsContent) {
912              
913              setCookie('firstNews', json.ReturnData[0].NewsContent, 1);
914              ajaxSetIsShowSession(false);
915              if (typeof (showNews) != "undefined") {
916                showNews();
917              }
918            }
919          }
920        },
921        error: function () {
922
923        }
924      })
925
926      //#endregion
927
928      
929      //#region
930      $('#catBtn').on('click', function () {
931        $('.navBtnEvent li').removeClass('navBtnActive');
932
933        if (_cateStatus == 'close') {
934          $('#catBtn > li').addClass('navBtnActive');
935          $('#catArea').css('display', 'block');
936          $('#catBtn .navBtn-arrow').addClass('navBtn-arrowUP');
937
938          changeCatType('Taaze','A', function () {
939            bindCatTitleClick();
940            _cateStatus = 'open';
941          });
942        } else {
943          closeCate();
944        }
945        if (document.body.clientWidth <= 768) {
946          $('#mainMenu').css('display', 'none');
947        } else {
948          $('#mainMenu').css('display', 'flex');
949        }
950        return false;
951      });
952      //#endregion
953
954      
955      //#region
956      $('#actBookBtn').on('click', function () {
957        if ($('.eventBooks_wrap').children().length <= 0) return false;
958        $('.navBtnEvent li').removeClass('navBtnActive');
959        $('.navContentArea:not(#eventBook)').css('display', 'none');
960        $('#eventBook').toggle();
961        if ($('#eventBook').css('display') == 'none') {
962          $('#actBookBtn > li').removeClass('navBtnActive');
963        } else {
964          $('#actBookBtn > li').addClass('navBtnActive');
965        }
966        if (document.body.clientWidth <= 768) {
967          $('#mainMenu').css('display', 'none');
968        } else {
969          $('#mainMenu').css('display', 'flex');
970        }
971        return false;
972      });
973      //#endregion
974
975      
976      //#region
977      $('#newsBtn').on('click', function () {
978        $('.navBtnEvent li').removeClass('navBtnActive');
979        $('.navContentArea:not(#newsArea)').css('display', 'none');
980        $('#newsArea').toggle();
981        if ($('#newsArea').css('display') == 'none') {
982          $('#newsBtn > li').removeClass('navBtnActive');
983          $('#newsBtn .navBtn-arrow').removeClass('navBtn-arrowUP');
984        } else {
985          $('#newsBtn > li').addClass('navBtnActive');
986          $('#newsBtn .navBtn-arrow').addClass('navBtn-arrowUP');
987        }
988        if (document.body.clientWidth <= 768) {
989          $('#mainMenu').css('display', 'none');
990        } else {
991          $('#mainMenu').css('display', 'flex');
992        }
993
994        return false;
995      })
996      //#endregion
997
998      $('div.advancedSearchBtn').click(function () {
999        $('div.advanced-skin').toggleClass('active');
1000        if ($('div.advanced-skin').hasClass('active')) {
1001          $('#advancedTitle').focus();
1002        }
1003      });
1004
1005      $('#searchBtn').click(function () {
1006        if (document.body.clientWidth <= 1101) {
1007          $('div.searchBlock').toggleClass('active');
1008        }
1009      });
1010
1011      
1012      $('body').click(function (e) {
1013        let target = $(e.target);
1014        /*
1015        if (!target.closest('#autoComplete').length && $("#autoComplete").is(':visible')) {
1016          $('#autoComplete').html('');
1017          $('div.toolbar-wrap').removeClass('has-match');
1018        }
1019        */
1020        if (!target.closest('#categoryFilter_wrap').length && $("#catArea").is(':visible')) {
1021          closeCate();
1022        }
1023
1024        if (!target.closest('#searchInput').length && !target.closest('.history-skin').length && $("#searchInput").hasClass('focus')) {
1025          $('#searchInput').removeClass('focus');
1026        }
1027
1028          if ($("div.member-view").hasClass('active') && !target.closest('div.member-skin').length) {
1029            closeMemberView();
1030          }
1031
1032
1033        if ($("div.advanced-skin").hasClass('active') && !target.closest('div.advanced-skin').length && !target.closest('div.advancedSearchBtn').length) {
1034          $('div.advanced-skin').removeClass('active');
1035        }
1036      })
1037
1038      $('#navCategoryChinese').change(function () {
1039
1040        if ($(this).is(':checked')) {
1041
1042          changeCatType('Taaze', 'A', function () {
1043
1044              _cateStatus = 'open';
1045          });
1046        } else {
1047
1048        }
1049      });
1050
1051      $('#navCategoryForeign').change(function () {
1052
1053        if ($(this).is(':checked')) {
1054          changeCatType('Taaze', 'C', function () {
1055
1056              _f_cateStatus = 'open';
1057          });
1058        } else {
1059
1060        }
1061      });
1062
1063      $(".e-news").on('click', function () {
1064        $(".business-rFeedback").show();
1065        $(".e-news").find('img').css('visibility', 'hidden');
1066      });
1067
1068
1069      $(".fb-fans").click(function () {
1070        document.location.href = "https://www.facebook.com/ireadcomtw/";
1071      });
1072
1073
1074      $(".subscribeBtn").on('click', function () {
1075        var Email = $('.subscribeInput').val();
1076
1077        if (Email == null || Email.trim() == "") {
1078          alert("請輸入Email");
1079          return false
1080        } else if (!/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(Email)) {
1081          alert("Email格式不正確");
1082          return false
1083        }
1084
1085        $.ajax({
1086          url: '/Home/ajaxENews',
1087          data: {
1088            'Email': Email,
1089          },
1090          success: function (error) {
1091            if (error == '您已取消電子報') {
1092              $(".cancelMsg").show(); // 您已取消電子報
1093              $(".cancelMail").text(Email);
1094            } else {
1095              $(".subscribeMsg").show();	 //您已訂閱電子報
1096              $(".subscribeMail").text(Email);
1097            }
1098          },
1099          error: function () {
1100            alert('訂閱失敗');
1101          }
1102        });
1103      });
1104
1105      $(".msg_closeBtn").on('click', function () {
1106        $(".subscribeMsg").hide();
1107        $(".cancelMsg").hide();
1108        $(".business-rFeedback").hide();
1109        $(".e-news").find('img').css('visibility', 'visible');
1110      });
1111    });
1112    
1113    $(window).resize(function () {
1114      if ($(window).width() == initWidth) {
1115        return;
1116      }
1117      else {
1118        initWidth = $(window).width();
1119      }
1120      if (document.body.clientWidth <= 768) {
1121        $('#mainMenu').css('display', 'none');
1122      } else {
1123        $('#mainMenu').css('display', 'block');
1124      }
1125
1126      bindCatTitleClick();
1127      getTopBanner();
1128
1129
1130      if (_isKeyup) return; 
1131      $('#autoComplete').html('');
1132      $('div.toolbar-wrap').removeClass('has-match');
1133
1134    })
1135
1136    
1137    
1138    //#region
1139    window.onbeforeunload = function (e) {
1140      delCookie('isShowFullBanner');
1141      delCookie('firstNews');
1142    }
1143    //#endregion
1144
1145    
1146    var bindBigCatTitleClick = function (id) {
1147      $('#' + id).off('click').on('click', function () {
1148        var type = '';
1149        if (id == 'catTitle1') {
1150          type = 'Taaze'
1151        } else {
1152          type = 'China'
1153        }
1154        changeCatType(type,'A', function () {
1155          $('#' + id).addClass('categoryTitle-atv');
1156          $('#' + id).siblings().removeClass('categoryTitle-atv');
1157          
1158          bindCatTitleClick();
1159
1160          _cateStatus = 'open';
1161        });
1162        return false;
1163      })
1164    }
1165
1166    
1167    var bindCatTitleClick = function () {
1168
1169      $('div.categorySubTitle_wrap').off('click').on('click', function () {
1170        var CatId = $(this).attr("data-id");
1171        openCate(CatId);
1172      });
1173    }
1174    function checkAdultProdImg(ContentDegree, ProdIcon,MemAgeType) {
1175
1176      if (ContentDegree == '4' && MemAgeType != 'A') {
1177        return "/content/images/bookcover_adults_n.jpg";
1178      }
1179      else {
1180        return ProdIcon;
1181      }
1182    }
1183  </script>
1183
1184  <!--v3.0-->
1185  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" />
1186  <link rel="stylesheet" type="text/css" href="/src/css/reset.css?v=20260706">
1187  <link rel="stylesheet" type="text/css" href="/src/css/uistyleguide.css?v=20260706">
1188    <link rel="stylesheet" type="text/css" href="/src/css/main.css?v=20260706">
1189
1190  
1191  
1191<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
1191
1192  
1192<script type="text/javascript" src="/src/script/script.js?v=20260706"></script>
1192
1193  
1194</head>
1195<body>
vendor: 79 bytes, lines 1195-1198
1195
1196
1197  <noscript>
1198    <iframe src="https://www.googletagmanager.com/ns.html?id=
1198GTM-57Z974V
vendor: 111 bytes, lines 1198-1203
1198"
1199            height="0" width="0" style="display:none;visibility:hidden"></iframe>
1200  </noscript>
1201
1202  
1203  
1204<form action="/home/Redemption" id="__AjaxAntiForgeryForm" method="post"><input name="__RequestVerificationToken" type="hidden" value="SGOY_jpqVjFCk5R5WMwnWRnPozGbDLgkCPOMC-1UvwSGhc2xFWX4zAtZxZd8IXN12KKBhWbVr9YU4l1XPhVCnpdVUhPUjwh1Ws2oFtRoSI01" /></form>  <!--置頂廣告-->
1205  <section id="top_banner_area" class="bannerTop_wrap xs-hide s-hide sm-hide" style="display: none">
1206    <a href="" target="_blank" alt="置頂廣告">
1207      <div class="bannerTop">
1208      </div>
1209    </a>
1210  </section>
1211
1212  <!--switch-->
1213  <section class="console-switch">
1214    <input type="checkbox" id="navToggle" name="nav-console">
1215    <input type="checkbox" id="advancedToggle" name="search-advance ">
1216    <input type="checkbox" id="navCategoryChinese" name="nav-popup" class="category_chinese">
1217    <input type="checkbox" id="navCategoryForeign" name="nav-popup" class="category_foreign">
1218    <input type="checkbox" id="navEvent" name="nav-popup" class="event">
1219    <input type="checkbox" id="navNews" name="nav-popup" class="news">
1220    <input type="checkbox" id="mediaUsedToggle" name="detail-usedbooks" class="usedbooks">
1221    <input type="checkbox" id="giftSwitch" name="detail-gift">
1222    <input type="checkbox" id="filterResultToggle" name="filter-result">
1223  </section>
1224  
1225  <section class="popup_view_wrap ">
1226    <div class="popup_skin redeem ">
1227      <span class="btn_close" onclick="closeRedeemMsg(false)"></span>
1228      <h2></h2>
1229      <div class="feedback_text" id="feedback_text">
1230        <p class="txt1" id="redeemMsg"></p>
1231        <p class="txt2">
1232          <strong></strong>
1233        </p>
1234        <div class="btn_wrap">
1235          <span onclick="closeRedeemMsg(true)">繼續兌換</span>
1236          <a href="#" title="電子書櫃" onclick="moveToBookcase()">前往書櫃看書</a>
1237        </div>
1238      </div>
1239    </div>
1240    <div class="popup_skin redeem_help">
1241      <span class="btn_close" onclick="closeHelp()"></span>
1242      <h2>
1243        <span>電子書兌換步驟</span>
1244      </h2>
1245      <div class="ebooksRedemption_step">
1246        <ul>
1247          <li class="step_style step1">
1248            <h4>
1249              <span>STEP 1</span>
1250            </h4>
1251            <div class="step_img step_img1">
1252
1253            </div>
1254            <p>收到電子書兌換序號</p>
1255          </li>
1256          <li class="step_style step2">
1257            <h4>
1258              <span>STEP 2</span>
1259            </h4>
1260            <div class="step_img step_img2">
1261
1262            </div>
1263            <p>
1264              <a href="/Account/Login" title="登入頁">登入</a>/
1265              <a href="/Account/Register" title="註冊頁">註冊</a><br>
1266              灰熊愛讀書會員
1267            </p>
1268          </li>
1269          <li class="step_style step3">
1270            <h4>
1271              <span>STEP 3</span>
1272            </h4>
1273            <div class="step_img step_img3">
1274
1275            </div>
1276            <p>
1277              於本頁輸入兌換序號
1278            </p>
1279          </li>
1280          <li class="step_style step4">
1281            <h4>
1282              <span>STEP 4</span>
1283            </h4>
1284            <div class="step_img step_img4">
1285
1286            </div>
1287            <p>
1288              兌換成功!<br>前往<a href="#" title="電子書櫃" onclick="toBookcase()">電子書櫃</a>閱讀
1289            </p>
1290          </li>
1291          <div class="clear"></div>
1292        </ul>
1293        <div class="ebooksRedemption_wrap">
1294          <h3>
1295            <span>電子書兌換說明</span>
1296          </h3>
1297          <ul>
1298            <li>◎ 每組序號只能兌換特定電子書一次。</li>
1299            <li>◎ 每本電子書一個會員帳號只能兌換一次。</li>            
1300          </ul>
1301        </div>
1302      </div>
1303    </div>
1304    <div class="bg_mark"></div>
1305  </section>
1306
1307
1308  <!--======= header =======-->
1309  <header class="">
1310    <div class="header-wrap">
1311      <label for="navToggle">
1312        <span class="icon-wrap menu">
1313        </span>
1314      </label>
1315      <div class="logo-wrap">
1316        <a href="/">
1317          <picture>
1318            <img class="logo" src="/src/assets/images/header/logo.png" alt="灰熊愛讀書">
1319          </picture>
1320        </a>
1321      </div>
1322      <div class="toolbar-wrap no-recode">
1323        <div class="popup-wrap">
1324          <!--advanced search-->
1325          <div id="advancedSearch" class="popup-view advanced-search">
1326            <form action="">
1327              <p>進階搜尋</p>
1328              <div class="input-wrap">
1329                <label for="advanced_title">書名</label>
1330                <input type="text" id="advancedTitle" placeholder="輸入書名">
1331              </div>
1332              <div class="input-wrap">
1333                <label for="advanced_author">作者</label>
1334                <input type="text" id="advancedAuthor" placeholder="輸入作者">
1335              </div>
1336              <div class="input-wrap">
1337                <label for="advanced_isbn">ISBN</label>
1338                <input type="text" id="advancedIsbn" placeholder="輸入ISBN">
1339              </div>
1340              <div class="input-wrap">
1341                <label for="advanced_publisher">出版社</label>
1342                <input type="text" id="advancedPublisher" placeholder="輸入出版社">
1343              </div>
1344              <div class="fuction-btn-wrap">
1345                <button class="btn-wrap reset" title="重置" id="advancedClaerBtn">
1346                  <strong>重置</strong>
1347                </button>
1348                <button class="btn-wrap type1 ok" title="進階搜尋" id="advancedBtn">
1349                  <strong>搜尋</strong>
1350                </button>
1351              </div>
1352            </form>
1353          </div>
1354          <!--search record-->
1355          <div class="popup-view search-tool-list">
1356            <div class="fuction-btn-wrap">
1357              <b>近期搜尋記錄</b>
1358              <button class="btn clear" onclick="clearKeyword(0,'');">清除搜尋記錄</button>
1359            </div>
1360            <div class="list-wrap">
1361              <ul id="searchHistory" class="search-list"></ul>
1362              <ul id="autoComplete" class="match-list"></ul>
1363            </div>
1364          </div>
1365        </div>
1366        <ul>
1367          <li class="search-close">
1368            <span class="icon-wrap back">
1369              <i></i>
1370            </span>
1371          </li>
1372          <li class="search-wrap">
1373            <input id="searchBar" type="search" placeholder="輸入搜尋文字" autocomplete="off">
1374            <button type="submit" class="search-btn">
1375              <span class="icon-wrap search">
1376                <i></i>
1377              </span>
1378            </button>
1379            <button type="reset" class="clear-btn">
1380              <span class="icon-wrap close">
1381                <i></i>
1382              </span>
1383            </button>
1384            <button type="submit" class="enter-btn">
1385              <span class="icon-wrap enter">
1386                <i></i>
1387              </span>
1388            </button>
1389            <label for="advancedToggle">
1390              <strong>進階搜尋</strong>
1391              <span class="icon-wrap solid-arrow-tb">
1392                <i></i>
1393              </span>
1394            </label>
1395          </li>
1396          <li class="ebookcase">
1397            <a target="_blank" title="電子書" onclick="toBookcase()"></a>
1398            <span class="icon-wrap ebookcase">
1399              <i></i>
1400            </span>
1401            <strong>電子書</strong>
1402          </li>
1403          <li class="shopcart">
1404            <strong id="headerCartCount" class="cart-count">0</strong>
1405            <a href="/Cart/OrderDetail" title="購物車"></a>
1406            <span class="icon-wrap cart">
1407              <i></i>
1408            </span>
1409            <strong>購物車</strong>
1410          </li>
1411          <li class="member">
1412            <label for="memberToggle" title="會員專區">
1413              <input type="checkbox" id="memberToggle">
1414            </label>
1415            <a href="/Account/Login" class="icon-wrap member login" title="登入">
1416              <i></i>
1417            </a>
1418            <a href="/Account/Register" class="register" title="註冊"></a>
1419            <a href="/Member" class="member-center" title="會員專區"></a>
1420            <span class="icon-wrap member">
1421              <i></i>
1422            </span>
1423            <strong>會員專區</strong>
1424            <span class="icon-wrap solid-arrow-tb">
1425              <i></i>
1426            </span>
1427            <div class="member-view">
1428              <div class="view-content">                
1429                <p class="user-name">$USER NICKNAME$$</p>
1430                <p class="user-account"></p>
1431                <p>我的紅利點數:<span class="bonuspoint">0</span>點</p>
1432                <p>可用E-Coupon:<span class="ecoupon">0</span>張</p>
1433                <button class="btn-wrap goto-member">
1434                  <strong>管理會員專區</strong>
1435                </button>
1436              </div>
1437              <div class="fuction-btn-wrap">
1438                <button class="btn download">
1439                  <span class="icon-wrap download">
1440                    <i></i>
1441                  </span>
1442                  <a href="https://www.ebookxross.com/index.html">下載閱讀器</a>
1443                </button>
1444                <button class="btn buylater">
1445                  <span class="icon-wrap buylater">
1446                    <i></i>
1447                  </span>
1448                  <a href="/Cart/OrderDetail">下次待買清單</a>
1449                </button>
1450                <button class="btn logout">
1451                  <span class="icon-wrap logout">
1452                    <i></i>
1453                  </span>
1454                  <strong>登出</strong>
1455                </button>
1456              </div>
1457            </div>
1458          </li>
1459        </ul>
1460      </div>
1461    </div>
1462    <nav class="main-menu" id="navBar">
1463      <div class="area-title">
1464        <label for="navToggle">
1465          <span class="icon-wrap back">
1466            <i></i>
1467          </span>
1468        </label>
1469        <p></p>
1470      </div>
1471      <ul>
1472        <li class="nav-item category_chinese">
1473          <label for="navCategoryChinese">
1474            <b>找中文書</b>
1475            <span class="icon-wrap arrow-tb">
1476              <i></i>
1477            </span>
1478          </label>
1479        </li>
1480        <li class="nav-item category_foreign">
1481          <label for="navCategoryForeign">
1482            找外文書<i class="new">new</i>
1483            <span class="icon-wrap arrow-tb">
1484              <i></i>
1485            </span>
1486          </label>
1487        </li>
1488        <li class="nav-item event">
1489          <label for="navEvent">
1490            活動書展
1491            <span class="icon-wrap arrow-tb">
1492              <i></i>
1493            </span>
1494          </label>
1495        </li>
1496        <li class="nav-item news">
1497          <label for="navNews">
1498            最新消息
1499            <span class="icon-wrap arrow-tb">
1500              <i></i>
1501            </span>
1502          </label>
1503        </li>
1504        <li class="nav-item">
1505          <a href="/PreOrder/Index">
1506            預購專區
1507          </a>
1508        </li>
1509        <li class="nav-item">
1510          <a href="/home/Redemption">
1511            電子書兌換
1512          </a>
1513        </li>
1514      </ul>
1515    </nav>
1516
1517  </header>
1518  
1519  <!--======= 功能列 =======-->
1520  <!--分類找書-->
1521  <section id="catArea" class="popup-wrap navbar catalog-popup" data-type="chinese">
1522    <div class="control-wrap">
1523      <label for="navCategoryChinese">
1524        <span class="icon-wrap back">
1525          <i></i>
1526        </span>
1527      </label>
1528      <h2>中文書籍分類</h2>
1529    </div>
1530    <div class="catalog-wrap">
1531      <ul class="main-category" id="categoryFilter_wrap"></ul>
1532    </div>
1533  </section>
1534
1535  <section id="catAreaForeign" class="popup-wrap navbar catalog-popup" data-type="foreign">
1536    <div class="control-wrap">
1537      <label for="navCategoryForeign">
1538        <span class="icon-wrap back">
1539          <i></i>
1540        </span>
1541      </label>
1542      <h2>外文書籍分類</h2>
1543    </div>
1544    <div class="catalog-wrap">
1545      <ul class="main-category" id="CategoryForeign"></ul>
1546    </div>
1547  </section>
1548  <!--活動書展banner-->
1549  <section id="eventBook" class="popup-wrap navbar event-popup">
1550    <div class="control-wrap top">
1551      <label for="navEvent">
1552        <span class="icon-wrap back">
1553          <i></i>
1554        </span>
1555      </label>
1556      <h2>活動書展</h2>
1557    </div>
1558    <ul class="event-list"></ul>
1559    <!-- <div class="skinStyle_wrap skinStyle_eventBooks">
1560      <div class="skinStyle">
1561        <div class="eventBooks_wrap">
1562        </div>
1563      </div>
1564    </div>-->
1565    <div class="control-wrap">
1566      <label for="navEvent">
1567        <span class="icon-wrap back">
1568          <i></i>
1569        </span>
1570        <strong>關閉視窗</strong>
1571      </label>
1572    </div>
1573    <label for="navEvent"></label>
1574  </section>
1575
1576  <!--最新消息-->
1577  <section class="popup-wrap navbar news-popup">
1578    <div class="control-wrap">
1579      <label for="navNews">
1580        <span class="icon-wrap back">
1581          <i></i>
1582        </span>
1583      </label>
1584      <b class="title">最新消息</b>
1585    </div>
1586    <ul class="news-list"></ul>
1587    <label for="navNews"></label>
1588  </section>
1589  <div id="newsArea" class="newsMsg_wrap navContentArea" style="display: none; ">
1590    <div class="newsMsg">
1591      <div class="newsMsg_text">
1592
1593      </div>
1594    </div>
1595  </div>
1596
1597
1598  <!--======= body =======-->
1599  <div class="" id="Content" style="position: relative">
1600    
1601
1602
1603
1604<script>
1605  var _validexno = "";
1606  var _BCGroup = "";
1607  function checkexno() {
1608    let exno = $('#exnoTxt').val().trim();
1609    if (exno != "") {
1610      //$('#submitbtn').addClass('inputSubmit-atv').text('確認');
1611      $('#lblredeem').addClass('entering focus');
1612
1613    }
1614    else {
1615      $('#lblredeem').removeClass('entering focus');
1616      //$('#submitbtn').removeClass('inputSubmit-atv').text('兌換');
1617    }
1618  }
1619
1620  function moveToBookcase() {    
1621    toBookcase(_BCGroup);
1622  }
1623  function openHelp() {
1624    $(".popup_view_wrap").addClass("help");
1625  }
1626
1627  function closeHelp() {
1628    $(".popup_view_wrap").removeClass("help");
1629  }
1630
1631  function clearProd() {
1632    $('.redeem_prods').hide();
1633    $('.redeem_prods').html("");
1634    $('.redeem_prods').removeClass("multiple");
1635  }
1636
1637  function closeRedeemMsg(isClearProd) {
1638    $(".popup_view_wrap").removeClass("redeem_ok redeem_ng trms free_redeem ");
1639    $("#redeemMsg").text("");
1640    if (isClearProd) {
1641      $('#exnoTxt').val('');
1642      _validexno = "";
1643      $('#lblredeem').removeClass('entering focus');
1644      clearProd();
1645      $(window).scrollTop(0);
1646    }
1647  }
1648
1649  function showRedeemMsg(isSuccess, msg, isTRMS, ExtraClass) {
1650
1651    $(".popup_view_wrap").removeClass("redeem_ok redeem_ng trms free_redeem ");
1652    if (isSuccess == true) {
1653      $(".popup_view_wrap").addClass("redeem_ok");      
1654      //$("#redeemMsg").html(msg);
1655      $("#feedback_text").html(msg);
1656      
1657      if (isTRMS) {
1658        _BCGroup = "trms";
1659        $(".popup_view_wrap").addClass("trms");
1660      }
1661      console.log(ExtraClass);
1662      $(".popup_view_wrap").addClass(ExtraClass);
1663    }
1664    else {
1665      _BCGroup = "";
1666      $(".popup_view_wrap").addClass("redeem_ng ");
1667      $("#feedback_text").html("<p class='txt1' id='redeemMsg'>" + msg + "</p>");
1668      
1669      //$("#redeemMsg").text(msg);
1670    }
1671  }
1672
1673  function submitExch() {
1674
1675    let exno = $('#exnoTxt').val().trim();
1676    if (exno != '') {
1677      if (exno != _validexno) {
1678        alert('序號已變更,請重新確認');
1679        return;
1680      }
1681      if (_isLogin == "True") {
1682        $('.btn_check').off('click').attr("disabled", true);
1683        //$('.btn_cancel').attr("disabled", true);
1684        $.ajax({
1685          url: '/Member/RedemptionEbook',
1686          type: 'POST',
1687          data: {
1688            "exno": exno,
1689          },
1690          success: function (response) {
1691            var json = JSON.parse(response);
1692            if (json.ReturnValue == "0") {
1693              let lstEbook = json.ReturnData;
1694              let strHTML = "";
1695              let isTRMS = false;
1696              let ReadEndDate = "";
1697              let ExtraClass = "";
1698              strHTML += '<div>';
1699              console.log(lstEbook[0].ReadEndDate);
1700              for (var i = 0; i < lstEbook.length; i++) {                
1701                if (i == 0 && (lstEbook[i].ReadEndDate != null && lstEbook[i].ReadEndDate != "")) {
1702                  console.log(i);
1703                  ReadEndDate = lstEbook[i].ReadEndDate;
1704                }
1705                let ProdNameShow = lstEbook[i].ProdName;
1706                
1707                if (lstEbook[i].SubCate == null || lstEbook[i].SubCate == "") {
1708                  
1709                }
1710                else {
1711                  IsTRMS = true;
1712                  if (lstEbook[i].SubCate == "S") {
1713                    ProdNameShow += '<font color="red">(僅教學資源)</font>';
1714                  }
1715                }
1716
1717                //if (i > 0)
1718                //  strHTML += "<br/>";
1719                strHTML += '<p class="ebooks ">';
1720                strHTML += ProdNameShow;
1721                strHTML += '</p>';
1722              }
1723              strHTML += '<p class="txt2">';
1724              strHTML += '<strong></strong>';
1725              strHTML += '</p>';
1726              strHTML += '</div>';
1727              if (ReadEndDate != '') {
1728                strHTML += '<div class="deadline_reminder"> ';
1729                strHTML += '  以上書籍免費閱讀 ';
1730                strHTML += '  <p> ';
1731                strHTML += '    <span class="yyyy">' + ReadEndDate.substr(0,4) + '</span> ';
1732                strHTML += '    / ';
1733                strHTML += '    <span class="mm">' + ReadEndDate.substr(4, 2) + '</span> ';
1734                strHTML += '    / ';
1735                strHTML += '    <span class="dd">' + ReadEndDate.substr(6, 2) + '</span> ';
1736                strHTML += '  </p> ';
1737                strHTML += '</div> ';                
1738                ExtraClass = "free_redeem";
1739              }
1740              
1741              strHTML += '<div class="btn_wrap"> ';
1742              strHTML += '  <span onclick="closeRedeemMsg(true)">繼續兌換</span> ';
1743              strHTML += '  <a href="#" title="電子書櫃" onclick="toBookcase()">前往書櫃看書</a> ';
1744              strHTML += '</div> ';
1745              showRedeemMsg(true,strHTML,isTRMS,ExtraClass);              
1746            }
1747            else {
1748              if (json.ReturnMessage != "") {
1749                console.log(json.ReturnMessage);
1750                showRedeemMsg(false, json.ReturnMessage);
1751                //alert(json.ReturnMessage);
1752              }
1753              else {
1754                showRedeemMsg(false, "");                
1755              }
1756            }
1757          },
1758          error: function (err) {
1759            console.log(err);
1760          }
1761        });
1762      }
1763      else {
1764        location.href = "/Account/Login?url=/home/Redemption?exno=" + exno;
1765      }
1766    }
1767  }
1768
1769  function cancelExch() {
1770
1771    $('.ebooksRedemption_wrap').removeClass("active");
1772    $('.redemptionList').find('ul').first().html("");
1773  }
1774
1775  $(document).ready(function () {
1776    checkexno();
1777    $('#exnoTxt').on('keyup', function (e) {
1778      if (e.key == 'Enter' || e.keyCode == 13) {
1779        $('#submitbtn').trigger('click');
1780      }
1781      else {
1782        checkexno();
1783      }
1784    });
1785
1786    $("#submitbtn").on('click', function (e) {
1787      clearProd();
1788      
1789      let exno = $('#exnoTxt').val().trim();
1790      if (exno != '') {
1791
1792        if (_isLogin == "True") {
1793
1794          $.ajax({
1795            url: '/Member/CheckRedemptionEbook',
1796            type: 'POST',
1797            data: {
1798              "exno": exno,
1799            },
1800            success: function (response) {
1801              let json = JSON.parse(response);
1802              let IsTRMS = false;
1803              if (json.ReturnValue == "0") {
1804                
1805                let validcount = 0;
1806                let lstEbook = json.ReturnData;
1807                let strHTML = "";
1808
1809
1810                for (var i = 0; i < lstEbook.length; i++) {
1811                  let liclass = "";
1812                  let ProdNameShow = lstEbook[i].ProdName;
1813                  
1814                  if (lstEbook[i].SubCate == null || lstEbook[i].SubCate == "") {
1815                    if (lstEbook[i].BuyCount == 1) {
1816                      //liclass = 'class="owned"';
1817                      liclass = ' state_have ';
1818                      //ProdNameShow += '<font color="red">(已擁有)</font>';
1819                    }
1820                    else {
1821                      validcount += 1;
1822                    }
1823                  }
1824                  else {
1825                    IsTRMS = true;
1826                    if (lstEbook[i].SubCate == "S") {
1827                      ProdNameShow += '<font color="red">(僅教學資源)</font>';
1828                    }
1829                  }
1830                  
1831                  strHTML += '<div class="prods ' + liclass + '"><div class="cover">';
1832                  strHTML += '<img src="' + lstEbook[i].ProdIconS + '" alt="' + lstEbook[i].ProdName + '">';
1833                  strHTML += '</div>';
1834                  strHTML += '<div class="title">' + ProdNameShow + '</div></div>';
1835
1836                  //strHTML += '<li ' + liclass + '>';
1837                  //strHTML += lstEbook[i].ProdName;
1838                  //strHTML += "</li>";
1839                }
1840                if (IsTRMS || validcount > 0) {
1841                  strHTML += '<div class="control-wrap">';
1842                  strHTML += '<div class="btn_check" onclick="submitExch()">確認兌換</div>';
1843                  strHTML += '</div>';
1844                  _validexno = exno
1845                }
1846                else {
1847
1848                }
1849                if (lstEbook.length > 1) {
1850                  $('.redeem_prods').addClass('multiple');
1851                }
1852                $('.redeem_prods').html(strHTML);
1853                $('.redeem_prods').show();
1854
1855                
1856                /*
1857                $('.btn_cancel').attr("disabled", false);
1858                $('.btn_submit').off('click');
1859                if (validcount == 0) {
1860                  $('.redemptionMsg').removeClass("normal partial").addClass("unable");
1861                }
1862                else {
1863                  _validexno = exno;
1864                  $('.btn_submit').on('click', submitExch).attr("disabled", false);
1865                  if (validcount == lstEbook.length) {
1866                    $('.redemptionMsg').removeClass("unable partial").addClass("normal");
1867                  }
1868                  else {
1869                    $('.redemptionMsg').removeClass("unable partial").addClass("partial");
1870                  }
1871                }*/
1872              }
1873              else {
1874                if (json.ReturnMessage != "") {
1875                  showRedeemMsg(false, json.ReturnMessage)
1876                  //alert(json.ReturnMessage);
1877                }
1878                else {
1879                  alert("error");
1880                }
1881              }
1882            },
1883            error: function (err) {
1884              console.log(err);
1885            }
1886          });
1887        }
1888        else {
1889          location.href = "/Account/Login?url=/home/Redemption?exno=" + exno;
1890        }
1891      }
1892    });
1893  });
1894</script>
1894
1895
1896<main class="redeem">
1897  <section>
1898    <h2 class="mb_title">電子書兌換<span class="btn_help" onclick="openHelp()">?</span></h2>
1899    <div class="redeem_code">
1900      <label for="redeem_code" class="" id="lblredeem">
1901        <input type="text" name="redeem_code" value="" id="exnoTxt">
1902        <span class="placeholder_text">輸入電子書兌換序號</span>
1903        <span class="btn_clear">
1904        </span>
1905      </label>
1906      <div class="btn_submit" id="submitbtn">驗證</div>
1907    </div>
1908
1909    <div class="redeem_prods" style="display:none">
1910
1911    </div>
1912
1913  </section>
1914
1915</main>
1916
1917
1918
1919  </div>
1920
1921  <footer>
1922    <div class="footer-wrap">
1923      <div class="business-l">
1924        <div class="aboutUs">
1925          <p>關於我們</p>
1926          <ul>
1927            <li><a href="/FAQ/?CatID=0&amp;ItemID=4">服務條款</a></li>
1928            <li><a href="/FAQ/?CatID=0&amp;ItemID=5">隱私權政策</a></li>
1929            <li><a href="/FAQ/?CatID=6&amp;ItemID=2">合作提案</a></li>
1930            <li><a href="/FAQ/?CatID=6&amp;ItemID=3">防詐騙提醒</a></li>
1931            <li><a href="/FAQ/?CatID=6&amp;ItemID=1">友站連結</a></li>
1932            <li><a href="mailto:[email protected]">聯繫客服</a></li>
1933          </ul>
1934        </div>
1935        <div class="newbie">
1936          <p>新手指南</p>
1937          <ul>
1938            <li><a href="/FAQ/?CatID=0&amp;ItemID=1">如何在灰熊愛讀書購物?</a></li>
1939            <li><a href="/FAQ/?CatID=0&amp;ItemID=3">購物流程說明</a></li>
1940            <li><a href="/FAQ/?CatID=2&amp;ItemID=1">訂單查詢</a></li>
1941            <li><a href="/FAQ/?CatID=2&amp;ItemID=5">電子發票開立說明</a></li>
1942            <li><a href="/FAQ/?CatID=7&amp;ItemID=2">如何購買電子書</a></li>
1943            <li><a href="/FAQ/?CatID=7&amp;ItemID=4">閱讀器下載 / 使用</a></li>
1944          </ul>
1945        </div>
1946        <div class="shopping-Notes">
1947          <p>付款方式與運費</p>
1948          <ul>
1949            <li><a href="/FAQ/?CatID=1&amp;ItemID=1">超商取貨付款</a></li>
1950            <li><a href="/FAQ/?CatID=3&amp;ItemID=1">一般退換貨規則</a></li>
1951            <li><a href="/FAQ/?CatID=3&amp;ItemID=3">退換貨寄送方法</a></li>
1952            <li><a href="/FAQ/?CatID=4">網站使用問題</a></li>
1953            <li><a href="/FAQ/?CatID=5">如何使用會員專區</a></li>
1954          </ul>
1955        </div>
1956      </div>
1957      <div class="business-r">
1958        <button class="fb-fans" type="">
1959          <img src="/Content/images/footer-btn-img.png" alt="灰熊愛讀書FB粉絲團">
1960        </button>
1961        <button class="e-news" type="">
1962          <div class="business-rFeedback" style="display: none;">
1963            <div class="subscribewrap">
1964              <span class="mailsend">E-mail</span>
1965              <span class="subscribeBtn">送出</span>
1966              <input class="subscribeInput" type="text" placeholder="請輸入您的E-Mail">
1967            </div>
1968          </div>
1969          <img src="/Content/images/footer-btn-img.png" alt="訂閱電子報">
1970        </button>
1971        <div class="twca-wrap">
1972          <div id="twcaseal" class="MINI">
1973            <img src="/Content/images/twca.GIF" alt="TWCA認證">
1974            <img id="twcad3"
1975                 src="//ssllogo.twca.com.tw/Check_OK.gif">
1976            <div id="twcad1">已認證</div>
1977            <div id="twcad2" style="visibility: hidden;">
1978              您現在所上的網站是 灰熊愛讀書<br>網址是 www.iread.com.tw<br>上述資訊取得時間
1979              2025/09/24<br>如需網站憑證詳細資訊,請點選 標章<br>
1980            </div>
1981          </div>
1982          
1982<script type="text/javascript" charset="utf-8">var twca_cn = "www.iread.com.tw";</script>
1982
1983          
1983<script type="text/javascript" src="//ssllogo.twca.com.tw/twcaseal_v3.js" charset="utf-8"></script>
1983
1984        </div>
1985      </div>
1986    </div>
1987    <div class="copyrights">
1988      <p>華藝數位股份有限公司 統編 : 70696235 地址:臺灣 234 新北市永和區成功路一段80號18樓</p>
1989      <p>
1990        客服信箱:<a href="mailto:[email protected]">[email protected]</a>
1991      </p>
1992      <small>Copyright © 2025 <strong>Airiti Inc.</strong> All rights reserved.</small>
1993    </div>
1994
1995  </footer>
1996
1997</body>
1998<script>
vendor: 425 bytes, lines 1998-2006
1998
1999  (function (w, d, s, l, i) {
2000    w[l] = w[l] || []; w[l].push({
2001      'gtm.start':
2002        new Date().getTime(), event: 'gtm.js'
2003    }); var f = d.getElementsByTagName(s)[0],
2004      j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
2005        'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
2006    })(window, document, 'script', 'dataLayer', '
2006GTM-57Z974V
vendor: 3 bytes, line 2006
2006');
2006</script>
2006
2007
2008</html>
2009<script>
2010  //footer的 先寫在這邊
2011  //$(".e-news").on('click', function () {
2012  //  $(".business-rFeedback").show();
2013  //});
2014
2015
2016  //$(".fb-fans").click(function () {
2017  //  document.location.href = "https://www.facebook.com/ireadcomtw/";
2018  //});
2019
2020
2021  //$(".subscribeBtn").on('click', function () {
2022  //  var Email = $('.subscribeInput').val();
2023
2024  //  if (Email == null || Email.trim() == "") {
2025  //    alert("請輸入Email");
2026  //    return false
2027  //  } else if (!/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(Email)) {
2028  //    alert("Email格式不正確");
2029  //    return false
2030  //  }
2031
2032
2033  //  $.ajax({
2034  //    url: '/Home/ajaxENews',
2035  //    data: {
2036  //      'Email': Email,
2037  //    },
2038  //    success: function (error) {
2039  //      if (error == '您已取消電子報') {          
2040  //        $(".cancelMsg").show(); // 您已取消電子報
2041  //        $(".cancelMail").text(Email);
2042  //      } else {          
2043  //        $(".subscribeMsg").show();	 //您已訂閱電子報
2044  //        $(".subscribeMail").text(Email);
2045  //      }
2046  //    },
2047  //    error: function () {
2048  //      alert('訂閱失敗');
2049  //    }
2050  //  });
2051  //});
2052
2053  //$(".msg_closeBtn").on('click', function () {
2054  //  $(".subscribeMsg").hide();
2055  //  $(".cancelMsg").hide();
2056  //  $(".business-rFeedback").hide();
2057  //});
2058
2059</script>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.