1<!DOCTYPE html> 2<!--[if lt IE 10]> <html lang="en" class="iex"> <![endif]--> 3<!--[if (gt IE 10)|!(IE)]><!--> 4<html lang="en"> 5<!--<![endif]--> 6 <head> 7 <meta charset="utf-8"> 8 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 9 <meta name="viewport" content="width=device-width, initial-scale=1"> 10 <meta name="csrf-token" content="Q8GXLsXfTvwdlhlmVQDNCWg6qM6HE4FZN2PRzPlH"> 11 <!-- Google Tag Manager -->
12<script>
vendor: 343 bytes, lines 12-16
12(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 13 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 14 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 15 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 16 })(window,document,'script','dataLayer','
16GTM-WPH2ZNH3
vendor: 3 bytes, line 16
16');
16</script>
16 17<!-- End Google Tag Manager --> 18 19 20 21<title>è¯çµ¡æå | TrendForce</title> 22<meta name="description" content="TrendForce (éé¦ç§æ) æä¾é«ç§æç¢æ¥ç ç©¶å ±åï¼å æ¬å¸å ´å¿«è¨ãç¢æ¥åæã广 ¼è¶¨å¢ç給åé åçæ±ºçè ï¼ä¸¦åå©ä¼æ¥æå°å ¨çææ°ãç«å³äºè§£"> 23<meta property="og:site_name" content="TrendForce"> 24<meta property="og:title" content="è¯çµ¡æå | TrendForce"> 25<meta property="og:description" content="TrendForce (éé¦ç§æ) æä¾é«ç§æç¢æ¥ç ç©¶å ±åï¼å æ¬å¸å ´å¿«è¨ãç¢æ¥åæã广 ¼è¶¨å¢ç給åé åçæ±ºçè ï¼ä¸¦åå©ä¼æ¥æå°å ¨çææ°ãç«å³äºè§£"> 26<meta property="og:url" content="https://www.trendforce.com.tw/contact/reporting"> 27<meta property="og:image" content="https://www.trendforce.com.tw/images/trendforce_og_04.jpg"> 28<meta property="og:type" content="website"> 29<meta property="fb:app_id" content="235503964049783"> 30<meta name="twitter:card" content="summary_large_image"> 31<meta name="twitter:site" content="@trendforce"> 32<meta name="twitter:title" content="è¯çµ¡æå | TrendForce"> 33<meta name="twitter:description" content="TrendForce (éé¦ç§æ) æä¾é«ç§æç¢æ¥ç ç©¶å ±åï¼å æ¬å¸å ´å¿«è¨ãç¢æ¥åæã广 ¼è¶¨å¢ç給åé åçæ±ºçè ï¼ä¸¦åå©ä¼æ¥æå°å ¨çææ°ãç«å³äºè§£"> 34<meta name="twitter:image" content="https://www.trendforce.com.tw/images/trendforce_og_04.jpg"> 35<link rel="canonical" href="https://www.trendforce.com.tw/contact/reporting"> 36
37<script type="application/ld+json"> 38{ 39 "@context": "https://schema.org", 40 "@type": "Organization", 41 "url": "https://www.trendforce.com.tw", 42 "sameAs": [ 43 "https://www.facebook.com/TrendForce.tw", 44 "https://www.linkedin.com/company/trendforce-éé¦ç§æ/" 45 ], 46 "logo": "https://www.trendforce.com.tw/images/apple-touch-icon-152x152.png", 47 "name": "éé¦ç§æ", 48 "description": "éé¦ç§æ(TrendForce)çºå°æ¥çå¸å ´ç ç©¶æ©æ§ï¼å°æ³¨æ¼å ¨çé«ç§æç¢æ¥ï¼æä¾æ·±å ¥çåæå ±åèé¡§åæåï¼æ¶µèåå°é«ã顯示æè¡ãæ¶è²»æ§é»åãç¶ è½ç¢æ¥ï¼ä»¥åè»ç¨é»åãäººå·¥æºæ §ã5G çæ°èç§æé åã", 49 "email": "[email protected]" 50} 51</script>
51 52 53
53<script src="/js/jquery.min.js"></script>
53 54 <link rel="stylesheet" href="/js/bootstrap/css/bootstrap.css"> 55
55<script src="/js/script.js?v=1790305947"></script>
55 56 <link rel="stylesheet" href="/css/style.css?v=1790305947"> 57 <link rel="stylesheet" href="/css/content-box.css"> 58 <link rel="stylesheet" href="/css/image-box.css"> 59 <link rel="stylesheet" href="/css/animations.css"> 60 <link rel="stylesheet" href="/css/components.css"> 61 <link rel="stylesheet" href="/js/flexslider/flexslider.css"> 62 <link rel="stylesheet" href="/js/magnific-popup.css"> 63 64 <link rel="stylesheet" href="/js/social.stream.css"> 65 <link rel="stylesheet" href="/js/jquery.flipster.min.css"> 66 <link rel="stylesheet" href="/css/skin.css?v=1790305947"> 67 <link rel="stylesheet" href="/css/ad.css?v=26092511"> 68 <link rel="stylesheet" href="/js/font-awesome/css/font-awesome.min.css"> 69 <link rel="stylesheet" href="/css/header-v3-next.css?v=1790305947"> 70 <link rel="stylesheet" href="/js/plot/plotComponents.css?v=26092511"> 71 <!-- Favicon --> 72 <link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico"/> 73 <link rel="apple-touch-icon-precomposed" sizes="57x57" href="/images/apple-touch-icon-57x57.png" /> 74 <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/images/apple-touch-icon-72x72.png" /> 75 <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/images/apple-touch-icon-114x114.png" /> 76 <link rel="apple-touch-icon-precomposed" sizes="120x120" href="/images/apple-touch-icon-120x120.png" /> 77 <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/images/apple-touch-icon-144x144.png" /> 78 <link rel="apple-touch-icon-precomposed" sizes="152x152" href="/images/apple-touch-icon-152x152.png" /> 79 <link rel="icon" type="image/png" href="/images/favicon-16x16.png" sizes="16x16" /> 80 <link rel="icon" type="image/png" href="/images/favicon-32x32.png" sizes="32x32" /> 81 <!-- google adsense -->
82<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1991057826427406" crossorigin="anonymous"></script>
82 83
83<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
vendor: 1 bytes, line 83
83
84<script> 85 window.googletag = window.googletag || {cmd: []}; 86 googletag.cmd.push(function() { 87 googletag.defineSlot('/23101350658/TF_TW_PC_Contact_Bottom01_728x90', [728,90], 'div-gpt-ad-1758866277261-0').addService(googletag.pubads()); 88 googletag.pubads().enableSingleRequest(); 89 googletag.pubads().collapseEmptyDivs(); 90 googletag.enableServices(); 91 }); 92</script>
92 93 </head> <body class="contacts" data-tf-page="inner"> 94 <!-- Google Tag Manager (noscript) -->
vendor: 72 bytes, lines 94-95
94 95 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
95GTM-WPH2ZNH3
vendor: 87 bytes, lines 95-96
95" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 96
96<!-- End Google Tag Manager (noscript) --> 97 <div id="preloader" style="display: none;"></div> 98 <header class="fixed-top scroll-change tf-hd2 " data-menu-anima="fade-in"> 99 <div class="navbar navbar-default mega-menu-fullwidth navbar-fixed-top" role="navigation"> 100 101 <div class="tf-hd2-header-top"> 102 <div class="container-fluid"> 103 <div class="site-header-top"> 104 105 <div class="d-flex align-items-center"> 106 <div class="margin-r-10"> 107 <a class="header_mobile-display-none" href="/"> 108 <img class="header_logo-pc logo-default" src="/images/TF_logo.svg" alt="TrendForce"> 109 </a> 110 <a class="pc-display-none" href="/"> 111 <img class="header_logo-mobile" src="/images/TF-logo-mobile.png" alt="logo"> 112 </a> 113 </div> 114 </div> 115 116 117 <div class="navbar-main site-navbar"> 118 <div class="container-fluid"> 119 <div class="collapse navbar-collapse"> 120 121 <div class="tf-hd2-menu-header"> 122 <a class="tf-hd2-menu-header-logo" href="/"> 123 <img src="/images/TF-logo-mobile.png" alt="logo"> 124 </a> 125 <div class="tf-hd2-menu-header-actions"> 126 <button type="button" class="tf-hd2-menu-search-toggle" aria-label="Toggle search" 127 aria-expanded="false"> 128 <i class="fa fa-search" aria-hidden="true"></i> 129 </button> 130 <a class="cart-button tf-hd2-menu-cart has-items" href="https://www.trendforce.com.tw/api/cart/toList" 131 target="_blank" rel="nofollow" aria-label="Cart"> 132 <i class="fa fa-shopping-cart" aria-hidden="true"></i> 133 </a> 134 <button type="button" class="navbar-collapse-close tf-hd2-menu-header-close" 135 aria-label="Close menu"> 136 <i class="fa fa-times"></i> 137 </button> 138 </div> 139 </div> 140 141 <div class="tf-hd2-menu-search"> 142 <div class="header_search-container"> 143 <input type="text" class="header_search-input" data-search-bar="menu" 144 placeholder="æå°æ´å¤..."> 145 <button type="button" class="header_search-clear" aria-label="Clear search"> 146 <i class="fa fa-times-circle" aria-hidden="true"></i> 147 </button> 148 <button type="button" class="header_search-submit" data-search-button="menu" 149 aria-label="Search"> 150 <i class="fa fa-search" aria-hidden="true"></i> 151 </button> 152 </div> 153 </div> 154 155 <div class="tf-hd2-nav-scroll"> 156 <ul class="nav navbar-nav header_navbar"> 157 158 159 <li class="dropdown tf-hd2-has-children"> 160 <a class="dropdown-toggle header_navbar-link-text" data-toggle="dropdown" 161 href="javascript:void(0)" role="button" aria-haspopup="true" 162 aria-expanded="false"> 163 ç ç©¶å ±å 164 <i class="fa fa-chevron-down tf-hd2-caret" aria-hidden="true"></i> 165 </a> 166 167 <div class="dropdown-menu tf-hd2-mega tf-hd2-mega--research fade-in"> 168 <div class="tf-hd2-panel-mobile-head"> 169 <button type="button" class="tf-hd2-panel-back"> 170 <i class="fa fa-chevron-left" aria-hidden="true"></i> Back 171 </button> 172 </div> 173 174 <a class="tf-hd2-toplink" href="/research"> 175 ç ç©¶å ±å <i class="fa fa-arrow-right" 176 aria-hidden="true"></i> 177 </a> 178 179 <div class="tf-hd2-mega-grid"> 180 <div class="tf-hd2-mega-cat"> 181 <button type="button" class="tf-hd2-mega-cat-head"> 182 AIèæºæ §çµç«¯ 183 <i class="fa fa-chevron-down tf-hd2-acc-caret" 184 aria-hidden="true"></i> 185 </button> 186 <ul class="tf-hd2-mega-cat-list"> 187 <li> 188 <a href="https://www.trendforce.com.tw/research/ai-server-data-center" 189 rel="" 190 target=""> 191 AI伺æå¨/è³æä¸å¿ 192 </a> 193 </li> 194 <li> 195 <a href="https://www.trendforce.com.tw/research/consumer-electronics" 196 rel="" 197 target=""> 198 æ¶è²»æ§é»å 199 </a> 200 </li> 201 <li> 202 <a href="https://www.trendforce.com.tw/research/robot" 203 rel="" 204 target=""> 205 æ©å¨äºº 206 </a> 207 </li> 208 </ul> 209 </div> 210 <div class="tf-hd2-mega-cat"> 211 <button type="button" class="tf-hd2-mega-cat-head"> 212 åå°é« 213 <i class="fa fa-chevron-down tf-hd2-acc-caret" 214 aria-hidden="true"></i> 215 </button> 216 <ul class="tf-hd2-mega-cat-list"> 217 <li> 218 <a href="https://www.trendforce.com.tw/research/memory-storage" 219 rel="" 220 target=""> 221 è¨æ¶é«èå²å 222 </a> 223 </li> 224 <li> 225 <a href="https://www.trendforce.com.tw/research/ic-design" 226 rel="" 227 target=""> 228 ICè¨è¨ 229 </a> 230 </li> 231 <li> 232 <a href="https://www.trendforce.com.tw/research/wafer-fabrication-foundry" 233 rel="" 234 target=""> 235 æ¶å製é /代工 236 </a> 237 </li> 238 <li> 239 <a href="https://www.trendforce.com.tw/research/semiconductor-device" 240 rel="" 241 target=""> 242 åå°é«å ä»¶ 243 </a> 244 </li> 245 <li> 246 <a href="https://www.trendforce.com.tw/research/ic-testing-packaging" 247 rel="" 248 target=""> 249 IC測試èå°è£ 250 </a> 251 </li> 252 </ul> 253
253 </div> 254 <div class="tf-hd2-mega-cat"> 255 <button type="button" class="tf-hd2-mega-cat-head"> 256 å é»é¡¯ç¤º 257 <i class="fa fa-chevron-down tf-hd2-acc-caret" 258 aria-hidden="true"></i> 259 </button> 260 <ul class="tf-hd2-mega-cat-list"> 261 <li> 262 <a href="https://www.trendforce.com.tw/research/display-applications" 263 rel="" 264 target=""> 265 顯示çµç«¯æç¨ 266 </a> 267 </li> 268 <li> 269 <a href="https://www.trendforce.com.tw/research/display-panel" 270 rel="" 271 target=""> 272 é¡¯ç¤ºé¢æ¿ 273 </a> 274 </li> 275 <li> 276 <a href="https://www.trendforce.com.tw/research/led-lighting" 277 rel="" 278 target=""> 279 LEDç §ææç¨ 280 </a> 281 </li> 282 <li> 283 <a href="https://www.trendforce.com.tw/research/led-display" 284 rel="" 285 target=""> 286 LED顯示æç¨ 287 </a> 288 </li> 289 <li> 290 <a href="https://www.trendforce.com.tw/research/specialty-led" 291 rel="" 292 target=""> 293 LEDç¹æ®æç¨ 294 </a> 295 </li> 296 </ul> 297 </div> 298 <div class="tf-hd2-mega-cat"> 299 <button type="button" class="tf-hd2-mega-cat-head"> 300 æ°èç§æèæç¨ 301 <i class="fa fa-chevron-down tf-hd2-acc-caret" 302 aria-hidden="true"></i> 303 </button> 304 <ul class="tf-hd2-mega-cat-list"> 305 <li> 306 <a href="https://www.trendforce.com.tw/research/automotive-ev" 307 rel="" 308 target=""> 309 æ±½è»/é»åè» 310 </a> 311 </li> 312 <li> 313 <a href="https://www.trendforce.com.tw/research/green-energy-storage" 314 rel="" 315 target=""> 316 ç¶ è½èå²è½ 317 </a> 318 </li> 319 </ul> 320 </div> 321 </div> 322 </div> 323 </li> 324 325 326 327 328 <li class="dropdown tf-hd2-has-children"> 329 <a class="dropdown-toggle header_navbar-link-text" 330 data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
331 <span class="membership-new-badge-dot">æå¡æ¹æ¡</span> 332 <i class="fa fa-chevron-down tf-hd2-caret" aria-hidden="true"></i> 333 </a> 334 <div class="dropdown-menu membership-menu multi-level fade-in tf-hd2-mega"> 335 <div class="tf-hd2-panel-mobile-head"> 336 <button type="button" class="tf-hd2-panel-back"> 337 <i class="fa fa-chevron-left" aria-hidden="true"></i> Back 338 </button> 339 </div> 340 <ul class="tf-hd2-mega-cat-list"> 341 <li><a href="/membership/DRAMeXchange">åå°é« 342 <span class="membership-badge-n">N</span></a></li> 343 <li><a href="/membership/WitsView">é¡¯ç¤ºå¨ 344 </a></li> 345 <li><a href="/membership/LEDinside">å é» 346 </a></li> 347 <li><a href="/membership/EnergyTrend">æ°è½æº 348 </a></li> 349 350 <li><a href="https://www.topology.com.tw/Member/MemberIntro" target="_blank" 351 rel="nofollow">éè¨æ¨æç¨ç§æ</a></li> 352 </ul> 353 </div> 354 </li> 355 356 357 <li class="dropdown tf-hd2-has-children"> 358 <a class="dropdown-toggle header_navbar-link-text" data-toggle="dropdown" 359 role="button" aria-haspopup="true" aria-expanded="false"> 360 广 ¼è¶¨å¢ 361 <i class="fa fa-chevron-down tf-hd2-caret" aria-hidden="true"></i> 362 </a> 363 <div class="dropdown-menu tf-hd2-mega tf-hd2-mega--price fade-in"> 364 <div class="tf-hd2-panel-mobile-head"> 365 <button type="button" class="tf-hd2-panel-back"> 366 <i class="fa fa-chevron-left" aria-hidden="true"></i> Back 367 </button> 368 </div> 369 <div class="tf-hd2-mega-grid"> 370 <div class="tf-hd2-mega-cat"> 371 <button type="button" class="tf-hd2-mega-cat-head"> 372 DRAM 373 <i class="fa fa-chevron-down tf-hd2-acc-caret" 374 aria-hidden="true"></i> 375 </button> 376 <ul class="tf-hd2-mega-cat-list"> 377 <li><a 378 href="https://www.trendforce.com.tw/price/dram/dram_spot">DRAM Spot Price</a> 379 </li> 380 <li><a 381 href="https://www.trendforce.com.tw/price/dram/dram_contract">DRAM Contract Price</a> 382 </li> 383 <li><a 384 href="https://www.trendforce.com.tw/price/dram/module_spot">Module Spot Price</a> 385 </li> 386 <li><a 387 href="https://www.trendforce.com.tw/price/dram/gddr_spot">GDDR Spot Price</a> 388 </li> 389 <li><a 390 href="https://www.trendforce.com.tw/price/dram/lpddr_spot">LPDDR Spot Price</a> 391 </li> 392 <li><a 393 href="https://www.trendforce.com.tw/price/dram/mobileDram_contract">Mobile DRAM Contract Price</a> 394 </li> 395 </ul> 396 </div> 397 <div class="tf-hd2-mega-cat"> 398 <button type="button" class="tf-hd2-mega-cat-head"> 399 NAND Flash 400 <i class="fa fa-chevron-down tf-hd2-acc-caret" 401 aria-hidden="true"></i> 402 </button> 403 <ul class="tf-hd2-mega-cat-list"> 404 <li><a 405 href="https://www.trendforce.com.tw/price/flash/flash_spot">NAND Flash Spot Price</a> 406 </li> 407 <li><a 408 href="https://www.trendforce.com.tw/price/flash/flash_contract">NAND Flash Contract Price</a> 409 </li> 410 <li><a 411 href="https://www.trendforce.com.tw/price/flash/wafer_spot">Wafer Spot Price</a> 412 </li> 413 <li><a 414 href="https://www.trendforce.com.tw/price/flash/memCard_spot">Memory Card Spot Price</a> 415 </li> 416 <li><a 417 href="https://www.trendforce.com.tw/price/flash/pcc_oem_ssd_contract">PC-Client OEM SSD Contract Price</a> 418 </li> 419 <li><a 420 href="https://www.trendforce.com.tw/price/flash/ssd_street">SSD Street Price</a> 421 </li> 422 <li><a 423 href="https://www.trendforce.com.tw/price/flash/wafer_contract">NAND Flash Wafer Contract Price</a> 424 </li> 425 <li><a 426 href="https://www.trendforce.com.tw/price/flash/emmc_spot">eMMC Spot Price</a> 427 </li> 428 <li><a 429 href="https://www.trendforce.com.tw/price/flash/emmc_contract">eMMC/UFS Contract Price</a> 430 </li> 431 </ul> 432 </div> 433 <div class="tf-hd2-mega-cat"> 434 <button type="button" class="tf-hd2-mega-cat-head"> 435 TFT-LCD 436 <i class="fa fa-chevron-down tf-hd2-acc-caret" 437 aria-hidden="true"></i> 438 </button> 439 <ul class="tf-hd2-mega-cat-list"> 440 <li><a 441 href="https://www.trendforce.com.tw/price/lcd/panel">Large Size Panel Price</a> 442 </li> 443 <li><a 444 href="https://www.trendforce.com.tw/price/lcd/smartphone">
444LCD Smartphone Panel Price</a> 445 </li> 446 <li><a 447 href="https://www.trendforce.com.tw/price/lcd/street">Street Price</a> 448 </li> 449 <li><a 450 href="https://www.trendforce.com.tw/price/lcd/shipment">Large Size Panel Shipment</a> 451 </li> 452 </ul> 453 </div> 454 <div class="tf-hd2-mega-cat"> 455 <button type="button" class="tf-hd2-mega-cat-head"> 456 PV 457 <i class="fa fa-chevron-down tf-hd2-acc-caret" 458 aria-hidden="true"></i> 459 </button> 460 <ul class="tf-hd2-mega-cat-list"> 461 <li><a 462 href="https://www.trendforce.com.tw/price/pv/polysilicon">夿¶ç½</a> 463 </li> 464 <li><a 465 href="https://www.trendforce.com.tw/price/pv/wafer">ç½æ¶å</a> 466 </li> 467 <li><a 468 href="https://www.trendforce.com.tw/price/pv/cell">黿± ç</a> 469 </li> 470 <li><a 471 href="https://www.trendforce.com.tw/price/pv/module">模çµ</a> 472 </li> 473 <li><a 474 href="https://www.trendforce.com.tw/price/pv/pv_glass">å ä¼ç»ç</a> 475 </li> 476 </ul> 477 </div> 478 <div class="tf-hd2-mega-cat"> 479 <button type="button" class="tf-hd2-mega-cat-head"> 480 Li-Ion Battery 481 <i class="fa fa-chevron-down tf-hd2-acc-caret" 482 aria-hidden="true"></i> 483 </button> 484 <ul class="tf-hd2-mega-cat-list"> 485 <li><a 486 href="https://www.trendforce.com.tw/price/battery-price/battery_cell_and_pack">黿± è¯å黿± å </a> 487 </li> 488 <li><a 489 href="https://www.trendforce.com.tw/price/battery-price/precursor_and_cathode_material">åé© é«åæ£æ¥µææ</a> 490 </li> 491 <li><a 492 href="https://www.trendforce.com.tw/price/battery-price/anode_material">è² æ¥µææ</a> 493 </li> 494 <li><a 495 href="https://www.trendforce.com.tw/price/battery-price/separator">éé¢è</a> 496 </li> 497 <li><a 498 href="https://www.trendforce.com.tw/price/battery-price/electrolyte">é»è§£æ¶²</a> 499 </li> 500 <li><a 501 href="https://www.trendforce.com.tw/price/battery-price/li_co_ni">é°ãé·ãé³</a> 502 </li> 503 <li><a 504 href="https://www.trendforce.com.tw/price/battery-price/other">å ¶ä»</a> 505 </li> 506 </ul> 507 </div> 508 </div> 509 </div> 510 </li> 511 512 513 <li class="dropdown tf-hd2-has-children"> 514 <a class="dropdown-toggle header_navbar-link-text" data-toggle="dropdown" 515 role="button" aria-haspopup="true" aria-expanded="false"> 516 æ´å¯ 517 <i class="fa fa-chevron-down tf-hd2-caret" aria-hidden="true"></i> 518 </a> 519 <div class="dropdown-menu multi-level fade-in tf-hd2-mega"> 520 <div class="tf-hd2-panel-mobile-head"> 521 <button type="button" class="tf-hd2-panel-back"> 522 <i class="fa fa-chevron-left" aria-hidden="true"></i> Back 523 </button> 524 </div> 525 <ul class="tf-hd2-mega-cat-list"> 526 <li><a href="/insights">ç¢æ¥æ´å¯</a></li> 527 <li><a href="/presscenter">æ°èä¸å¿</a></li> 528 </ul> 529 </div> 530 </li> 531 532 533 <li class="dropdown"> 534 <a class="header_navbar-link-text" href="/seminar" 535 data-toggle="dropdown" role="button">æ´»åå°å</a> 536 </li> 537 538 539 <li class="dropdown tf-hd2-has-children"> 540 <a class="dropdown-toggle header_navbar-link-text" data-toggle="dropdown" 541 role="button" aria-haspopup="true" aria-expanded="false"> 542 æ¢ç´¢ 543 <i class="fa fa-chevron-down tf-hd2-caret" aria-hidden="true"></i> 544 </a> 545 <div class="dropdown-menu multi-level fade-in tf-hd2-mega"> 546 <div class="tf-hd2-panel-mobile-head"> 547 <button type="button" class="tf-hd2-panel-back"> 548 <i class="fa fa-chevron-left" aria-hidden="true"></i> Back 549 </button> 550 </div> 551 <ul class="tf-hd2-mega-cat-list"> 552 <li><a href="https://datatrack.trendforce.com.tw/#login_check" target="_blank" 553 rel="noopener">DataTrack <i class="fa fa-external-link" 554 aria-hidden="true"></i></a></li> 555 <li> 556 <a 557 href="/login?sso=intellectnet" rel="nofollow" target="_blank" data-act-pos="header-menu" data-act-type="enter-intellectnet">AI Agent</a> 558 </li> 559 </ul> 560 </div> 561 </li> 562 563 564 <li class="tf-hd2-menu-signin-item"> 565 <a class="tf-hd2-menu-signin" href="/login" 566 rel="nofollow">æå¡ç»å ¥</a> 567 </li> 568 <li class="tf-hd2-menu-getsupport-item"> 569 570 <a class="tf-hd2-menu-getsupport lightbox" href="#contact-sales" rel="nofollow" 571 data-act-pos="header-contact"> 572 åå¾åå© 573 </a> 574 </li> 575 <li class="tf-hd2-menu-social-item"> 576 <div class="tf-hd2-social-links"> 577 <a href="https://x.com/trendforce" target="_blank" rel="noopener" 578 aria-label="X"> 579 <img src="/images/icon-x-square.svg" alt="X"> 580 </a> 581 <a href="https://www.linkedin.com/company/trendforce-
581éé¦ç§æ/" target="_blank" rel="noopener" 582 aria-label="LinkedIn"> 583 <img src="/images/icon-linkedin.svg" alt="LinkedIn"> 584 </a> 585 <a href="https://insights.trendforce.com/" target="_blank" rel="noopener" 586 aria-label="Substack"> 587 <img src="/images/icon-substack.svg" alt="Substack"> 588 </a> 589 </div> 590 </li> 591 592 </ul> 593 </div> 594 595 </div> 596 </div> 597 </div> 598 599 600 <div class="header_icon-group"> 601 <div class="d-flex gap-2 align-items-center"> 602 603 <div class="header_search-container"> 604 <input type="text" class="header_search-input" data-search-bar="navbar" 605 placeholder="æå°æ´å¤..."> 606 <button type="button" class="header_search-clear" aria-label="Clear search"> 607 <i class="fa fa-times-circle" aria-hidden="true"></i> 608 </button> 609 <button type="button" class="header_search-submit" data-search-button="navbar" 610 aria-label="Search"> 611 <i class="fa fa-search" aria-hidden="true"></i> 612 </button> 613 <div class="header_search-recommand-box"> 614 <h4>ç±éééµå</h4> 615 <div class="header_search-recommand-keyword"> 616 <a href="/search?query=DRAM&src=navbar" 617 rel="nofollow">#DRAM</a> 618 <a href="/search?query=Foundry&src=navbar" 619 rel="nofollow">#Foundry</a> 620 <a href="/search?query=AI+Server&src=navbar" 621 rel="nofollow">#AI Server</a> 622 <a href="/search?query=HBM&src=navbar" 623 rel="nofollow">#HBM</a> 624 <a href="/search?query=FOPLP&src=navbar" 625 rel="nofollow">#FOPLP</a> 626 <a href="/search?query=CoWoS&src=navbar" 627 rel="nofollow">#CoWoS</a> 628 <a href="/search?query=NAND+Flash&src=navbar" 629 rel="nofollow">#NAND Flash</a> 630 <a href="/search?query=Automotive&src=navbar" 631 rel="nofollow">#Automotive</a> 632 <a href="/search?query=MLCC&src=navbar" 633 rel="nofollow">#MLCC</a> 634 <a href="/search?query=Server&src=navbar" 635 rel="nofollow">#Server</a> 636 <a href="/search?query=Micro+LED&src=navbar" 637 rel="nofollow">#Micro LED</a> 638 <a href="/search?query=IC+Design&src=navbar" 639 rel="nofollow">#IC Design</a> 640 </div> 641 </div> 642 </div> 643 <div class="header_search-overlay"></div> 644 645 <button type="button" class="tf-hd2-search-toggle" aria-label="Open search"> 646 <i class="fa fa-search" aria-hidden="true"></i> 647 </button> 648
649 <span class="tf-hd2-icon-divider" aria-hidden="true"></span> 650 651 <div class="cart-button-wrapper"> 652 <a class="cart-button has-items" href="https://www.trendforce.com.tw/api/cart/toList" target="_blank" 653 rel="nofollow"> 654 <i class="fa fa-shopping-cart" aria-hidden="true"></i> 655 </a> 656 <div class="cart-dropdown"> 657 <div class="cart-dropdown-header"> 658 <h4>è³¼ç©æ¸ å®</h4> 659 <span class="cart-count-badge">0ååé </span> 660 </div> 661 <div class="cart-dropdown-items"> 662 <div class="text-center" style="padding: 40px 0; color: #999; font-size: 14px;"> 663 è³¼ç©è»æ¯ç©ºç 664 </div> 665 </div> 666 <div class="cart-dropdown-footer"> 667 <div class="cart-total-row"> 668 <span class="cart-total-label">é ç®ç¸½é¡ (æªç¨ )</span> 669 <span class="cart-total-amount">TWD 0</span> 670 </div> 671 <a href="https://www.trendforce.com.tw/api/cart/toList" class="view-cart-link"> 672 <span>æ¥çè³¼ç©è»</span> 673 <i class="fa fa-arrow-right"></i> 674 </a> 675 </div> 676 </div> 677 </div> 678 679 <a class="tf-hd2-get-support lightbox" href="#contact-sales" rel="nofollow" 680 aria-label="è¯çµ¡æå" data-act-pos="header-contact"> 681 <img src="/images/icon-customer-service.svg" alt=""> 682 </a> 683 684 <a class="sign-in-button tf-hd2-topbar-signin hidden-sm" href="/login" rel="nofollow"> 685 æå¡ç»å ¥ 686 </a> 687 688 <span class="tf-hd2-icon-divider hidden-sm" aria-hidden="true"></span> 689 690 <div class="tf-hd2-social-links hidden-sm"> 691 <a href="https://insights.trendforce.com/" target="_blank" rel="noopener" aria-label="Substack"> 692 <img class="tf-hd2-social-icon-default" src="/images/icon-substack.svg" alt="Substack"> 693 <img class="tf-hd2-social-icon-white" src="/images/icon-substack-w.svg" alt="Substack"> 694 </a> 695 <a href="https://x.com/trendforce" target="_blank" rel="noopener" aria-label="X"> 696 <img class="tf-hd2-social-icon-default" src="/images/icon-x-square.svg" alt="X"> 697 <img class="tf-hd2-social-icon-white" src="/images/icon-x-square-w.svg" alt="X"> 698 </a> 699 <a href="https://www.linkedin.com/company/trendforce-éé¦ç§æ/" target="_blank" rel="noopener" aria-label="LinkedIn"> 700 <img class="tf-hd2-social-icon-default" src="/images/icon-linkedin.svg" alt="LinkedIn"> 701 <img class="tf-hd2-social-icon-white" src="/images/icon-linkedin-w.svg" alt="LinkedIn"> 702 </a> 703 </div> 704 705 </div> 706 </div> 707 708 <div class="hidden-md hidden-lg"> 709 <div class="navbar-header"> 710 <button type="button" class="navbar-toggle" aria-label="Open menu"> 711 <i class="fa fa-bars"></i> 712 </button> 713 </div> 714 </div> 715 716 </div> 717 </div> 718</div> 719 720 721
722<script> 723 // é客訪åå¿ è¦åå¾çcookieï¼æå¨æªç»å ¥è³¼è²·æå³çµ¦carté£ç«¯ 724 (function () { 725 function getCookie(name) { 726 const value = '; ' + document.cookie; 727 const parts = value.split('; ' + name + '='); 728 if (parts.length === 2) return decodeURIComponent(parts.pop().split(';').shift()); 729 return null; 730 } 731 732 function setCookie(name, value, days) { 733 const expires = new Date(); 734 expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000)); 735 document.cookie = name + '=' + encodeURIComponent(value) + ';expires=' + expires.toUTCString() + ';path=/'; 736 } 737 738 try { 739 if (!getCookie('guest_id')) { 740 const ts = Date.now(); 741 const rnd = Math.floor(1000 + Math.random() * 9000); 742 const guestId = '' + ts + rnd; 743 setCookie('guest_id', guestId, 30); 744 } 745 } catch (e) { 746 console.error('guest_id cookie setup failed', e); 747 } 748 })(); 749</script>
749 750
751<script> 752 document.addEventListener('DOMContentLoaded', function () { 753 const socialIcon = document.querySelector('.social-icon.active'); 754 const accountContent = document.querySelector('.header_account-content'); 755 if (!socialIcon || !accountContent) return; 756 757 socialIcon.addEventListener('mouseover', function () { 758 accountContent.style.display = 'flex'; 759 }); 760 761 accountContent.addEventListener('mouseleave', function () { 762 accountContent.style.display = 'none'; 763 }); 764 }); 765</script>
765 766
767<script> 768 // æå°åï¼è¼¸å ¥æ¡ â X æ¸ é¤ â æ¾å¤§é¡æééåºï¼ï¼æ²¿ç¨ header_v3_prototype.html çäºåé輯 769 document.addEventListener('DOMContentLoaded', function () { 770 const executeSearch = (query, src) => { 771 if (!query) return; 772 window.location.href = `/search?query=${encodeURIComponent(query)}&src=${encodeURIComponent(src)}`; 773 }; 774 775 document.querySelectorAll('.header_search-container').forEach(function (container) { 776 const input = container.querySelector('.header_search-input'); 777 const clearBtn = container.querySelector('.header_search-clear'); 778 const submitBtn = container.querySelector('.header_search-submit'); 779 if (!input || !clearBtn || !submitBtn) return; 780 781 function syncHasValue() { 782 container.classList.toggle('has-value', input.value.trim().length > 0); 783 } 784 syncHasValue(); 785 input.addEventListener('input', syncHasValue); 786 787 clearBtn.addEventListener('click', function (e) { 788 e.preventDefault(); 789 input.value = ''; 790 syncHasValue(); 791 input.focus(); 792 }); 793 794 submitBtn.addEventListener('click', function (e) { 795 e.preventDefault(); 796 executeSearch(input.value.trim(), input.getAttribute('data-search-bar') || 'navbar'); 797 }); 798 input.addEventListener('keydown', function (e) { 799 if (e.key === 'Enter') { 800 e.preventDefault(); 801 executeSearch(input.value.trim(), input.getAttribute('data-search-bar') || 'navbar'); 802 } 803 }); 804 }); 805 806 // ææ©/å¹³æ¿ï¼Menu å §æå°å¡é è¨æ¶åï¼ç± Menu Header æ¾å¤§é¡å±é/æ¶åï¼ 807 // å¤é¨æå°å示é Menu æç´æ¥ä»¥å±éçæ åç¾ 808 const searchToggle = document.querySelector('.tf-hd2-search-toggle'); 809 const navbarToggle = document.querySelector('.navbar-toggle'); 810 const menuSearch = document.querySelector('.tf-hd2-menu-search'); 811 const menuSearchToggle = document.querySelector('.tf-hd2-menu-search-toggle'); 812 const menuInput = menuSearch ? menuSearch.querySelector('.header_search-input') : null; 813 814 function openMenuSearch(instant) { 815 if (!menuSearch) return; 816 if (instant) menuSearch.classList.add('tf-hd2-no-anim'); 817 menuSearch.classList.add('is-open'); 818 if (menuSearchToggle) { 819 menuSearchToggle.classList.add('is-active'); 820 menuSearchToggle.setAttribute('aria-expanded', 'true'); 821 } 822 if (instant) { 823 requestAnimationFrame(function () { menuSearch.classList.remove('tf-hd2-no-anim'); }); 824 } 825 } 826 827 function closeMenuSearch() { 828 if (!menuSearch) return; 829 menuSearch.classList.remove('is-open'); 830 if (menuSearchToggle) { 831 menuSearchToggle.classList.remove('is-active'); 832 menuSearchToggle.setAttribute('aria-expanded', 'false'); 833 } 834 } 835 836 if (menuSearchToggle && menuSearch) { 837 menuSearchToggle.addEventListener('click', function () { 838 if (menuSearch.classList.contains('is-open')) { 839 closeMenuSearch(); 840 } else { 841 openMenuSearch(false); 842 if (menuInput) menuInput.focus(); 843 } 844 }); 845 } 846 847 if (searchToggle && navbarToggle) { 848 searchToggle.addEventListener('click', function () { 849 navbarToggle.click(); 850 openMenuSearch(true); 851 setTimeout(function () { if (menuInput) menuInput.focus(); }, 350); 852 }); 853 } 854 855 if (navbarToggle) { 856 let mobileMenuOpen = false; 857 navbarToggle.addEventListener('click', function () { 858 mobileMenuOpen = !mobileMenuOpen; 859 if (!mobileMenuOpen) closeMenuSearch(); 860 }); 861 } 862 }); 863</script>
863 864
865<script> 866 // ä¸ç´å°è¦½ï¼æ¡æ© hover å±éï¼ææ©å¹³æ¿é»æå³æ»ï¼æ²¿ç¨ header_v3_prototype.html çäºåé輯 867 document.addEventListener('DOMContentLoaded', function () { 868 const isMobile = function () { return window.matchMedia('(max-width: 991px)').matches; }; 869 const items = document.querySelectorAll('.tf-hd2-has-children'); 870 871 function closeAll(except) { 872 items.forEach(function (li) { 873 if (li !== except) { 874 li.classList.remove('tf-hd2-open'); 875 const a = li.querySelector(':scope > a'); 876 if (a) a.setAttribute('aria-expanded', 'false'); 877 } 878 }); 879 } 880 881 items.forEach(function (li) { 882 const toggle = li.querySelector(':scope > a.dropdown-toggle'); 883 let closeTimer = null; 884 885 li.addEventListener('mouseenter', function () { 886 if (isMobile()) return; 887 clearTimeout(closeTimer); 888 closeAll(li); 889 li.classList.add('tf-hd2-open'); 890 if (toggle) toggle.setAttribute('aria-expanded', 'true'); 891 }); 892 li.addEventListener('mouseleave', function () { 893 if (isMobile()) return; 894 clearTimeout(closeTimer); 895 closeTimer = setTimeout(function () { 896 li.classList.remove('tf-hd2-open'); 897 if (toggle) toggle.setAttribute('aria-expanded', 'false'); 898 }, 250); 899 }); 900 901 if (toggle) { 902 toggle.addEventListener('click', function (e) { 903 if (!isMobile()) return; 904 e.preventDefault(); 905 closeAll(li); 906 li.classList.add('tf-hd2-open'); 907 toggle.setAttribute('aria-expanded', 'true'); 908 }); 909 } 910 911 const backBtn = li.querySelector('.tf-hd2-panel-back'); 912 if (backBtn) { 913 backBtn.addEventListener('click', function () { 914 li.classList.remove('tf-hd2-open'); 915 if (toggle) toggle.setAttribute('aria-expanded', 'false'); 916 }); 917 } 918 }); 919 920 document.querySelectorAll('.tf-hd2-mega-grid').forEach(function (grid) { 921 const cats = grid.querySelectorAll(':scope > .tf-hd2-mega-cat'); 922 cats.forEach(function (cat) { 923 const head = cat.querySelector('.tf-hd2-mega-cat-head'); 924 if (!head) return; 925 head.addEventListener('click', function () { 926 if (!isMobile()) return; 927 const wasOpen = cat.classList.contains('tf-hd2-acc-open'); 928 cats.forEach(function (c) { c.classList.remove('tf-hd2-acc-open'); }); 929 if (!wasOpen) cat.classList.add('tf-hd2-acc-open'); 930 }); 931 }); 932 }); 933 }); 934</script>
934 935
936<script> 937 /** 938 * Cart Dropdown Interaction Logicï¼æ²¿ç¨æ¢æ v2 è³¼ç©è»é輯ï¼class å稱æªè®ï¼ 939 */ 940 window.getCartCookieName = function () { 941 const locale = 'zh-tw'; 942 const languageMap = { 'zh-tw': 'tw', 'zh-cn': 'en', 'en': 'en' }; 943 const langSuffix = languageMap[locale] || 'en'; 944 return 'cart_' + langSuffix; 945 }; 946 947 window.getCookie = function (name) { 948 const value = '; ' + document.cookie; 949 const parts = value.split('; ' + name + '='); 950 if (parts.length === 2) { 951 return decodeURIComponent(parts.pop().split(';').shift()); 952 } 953 return null; 954 }; 955 956 window.isInCart = function (packageId) { 957 const cartCookieName = window.getCartCookieName(); 958 const guestCart = window.getCookie(cartCookieName); 959 if (guestCart) { 960 try { 961 const cartData = JSON.parse(guestCart); 962 return cartData.some(function (item) { return item.package_id == packageId; }); 963 } catch (e) { 964 console.error('檢æ¥è³¼ç©è»å¤±æ:', e); 965 return false; 966 } 967 } 968 return false; 969 }; 970 971 function getCookie(name) { 972 const value = '; ' + document.cookie; 973 const parts = value.split('; ' + name + '='); 974 if (parts.length === 2) { 975 return decodeURIComponent(parts.pop().split(';').shift()); 976 } 977 return null; 978 } 979 980 function setCookie(name, value, minutes) { 981 if (minutes === 0) { 982 document.cookie = name + '=' + encodeURIComponent(value) + ';path=/'; 983 } else { 984 const expires = new Date(); 985 expires.setTime(expires.getTime() + minutes * 60 * 1000); 986 document.cookie = name + '=' + encodeURIComponent(value) + ';expires=' + expires.toUTCString() + ';path=/'; 987 } 988 } 989 990 function mergeCartData(existingItems, newItems) { 991 const cartMap = new Map(); 992 existingItems.forEach(function (item) { 993 if (item.package_id) cartMap.set(String(item.package_id), item); 994 }); 995 newItems.forEach(function (item) { 996 if (item.package_id && !cartMap.has(String(item.package_id))) { 997 cartMap.set(String(item.package_id), item); 998 } 999 }); 1000 return Array.from(cartMap.values()); 1001 } 1002 1003 function updateCartDisplay(cartData) { 1004 const itemsContainer = document.querySelector('.cart-dropdown-items'); 1005 const countBadge = document.querySelector('.cart-count-badge'); 1006 const totalAmount = document.querySelector('.cart-total-amount'); 1007 // æ¡æ©/ææ©é¸å®åæä¸é¡ .cart-buttonï¼querySelector åªææå°ç¬¬ä¸é¡ï¼å¦ä¸é¡ç´ ççæ æ°¸é ä¸ææ´æ° 1008 const cartButtons = document.querySelectorAll('.cart-button'); 1009 1010 if (!cartData || cartData.length === 0) { 1011 cartButtons.forEach(function (btn) { btn.classList.remove('has-items'); }); 1012 if (itemsContainer) itemsContainer.innerHTML = '<div class="text-center" style="padding: 40px 0; color: #999; font-size: 14px;">è³¼ç©è»æ¯ç©ºç</div>'; 1013 if (countBadge) countBadge.textContent = '0ååé '; 1014 if (totalAmount) totalAmount.textContent = 'TWD 0'; 1015 return; 1016 } 1017 cartButtons.forEach(function (btn) { btn.classList.add('has-items'); }); 1018 if (countBadge) countBadge.textContent = cartData.length + 'ååé '; 1019 1020 let total = 0; 1021 let html = ''; 1022 cartData.forEach(function (item) { 1023 const price = parseFloat(item.product_price || item.price) || 0; 1024 total += price; 1025 1026 html += '<div class="cart-item" data-package-id="' + item.package_id + '">'; 1027 html += '<div class="cart-item-info">'; 1028 html += '<div class="cart-item-name">' + (item.brand_product_name || item.package_name || item.name || '') + '</div>'; 1029 html += '<div class="cart-item-price">
1029TWD ' + price.toLocaleString('en-US') + '</div>'; 1030 html += '</div>'; 1031 html += '<i class="fa fa-times cart-item-remove"></i>'; 1032 html += '</div>'; 1033 }); 1034 1035 if (itemsContainer) itemsContainer.innerHTML = html; 1036 if (totalAmount) totalAmount.textContent = 'TWD ' + total.toLocaleString('en-US'); 1037 } 1038 1039 window.loadCartData = function () { 1040 const cartCookieName = getCartCookieName(); 1041 const guestCart = getCookie(cartCookieName); 1042 1043 if (guestCart) { 1044 try { 1045 const cartData = JSON.parse(guestCart); 1046 updateCartDisplay(cartData); 1047 } catch (e) { 1048 console.error('è§£æ Cookie è³¼ç©è»å¤±æï¼å¯è½æ¯èçå 坿 ¼å¼ï¼:', e); 1049 document.cookie = cartCookieName + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; 1050 updateCartDisplay([]); 1051 } 1052 } else { 1053 updateCartDisplay([]); 1054 } 1055 }; 1056 1057 document.addEventListener('DOMContentLoaded', function () { 1058 const cartDropdown = document.querySelector('.cart-dropdown'); 1059 if (!cartDropdown) return; 1060 1061 setTimeout(function () { 1062 document.querySelectorAll('[data-cart-package]').forEach(function (button) { 1063 const packageId = button.getAttribute('data-cart-package'); 1064 if (packageId && typeof window.isInCart === 'function' && window.isInCart(packageId)) { 1065 const cartAction = (button.getAttribute('data-cart') || '').toLowerCase(); 1066 button.classList.add('added'); 1067 if (cartAction === 'add_to_cart' || cartAction === 'add_cart') { 1068 const img = button.querySelector('img'); 1069 const span = button.querySelector('span'); 1070 if (img) { 1071 img.src = '/images/addedcart.svg'; 1072 if (span) span.textContent = 'å·²å å ¥è³¼ç©è»'; 1073 } else if (span) { 1074 span.textContent = 'å·²å å ¥è³¼ç©è»'; 1075 } else if (button.tagName && (button.tagName.toLowerCase() === 'button' || button.tagName.toLowerCase() === 'a')) { 1076 button.innerHTML = '<span>å·²å å ¥è³¼ç©è»</span>'; 1077 } else { 1078 button.textContent = 'å·²å å ¥è³¼ç©è»'; 1079 } 1080 try { button.disabled = true; } catch (e) { } 1081 } 1082 } 1083 }); 1084 }, 100); 1085 1086 loadCartData(); 1087 1088 fetch('/api/cart/checkGuestCartSync', { 1089 method: 'GET', 1090 headers: { 1091 'Content-Type': 'application/json', 1092 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'), 1093 } 1094 }) 1095 .then(function(response) { return response.json(); }) 1096 .then(function(data) { 1097 if (data.error === 0 && data.need_sync && data.cart_data) { 1098 const cartData = data.cart_data; 1099 const currentCookieName = getCartCookieName(); 1100 const currentLang = 'tw'; 1101 const targetCurrency = currentLang === 'tw' ? 1 : 2; 1102 1103 const langItems = []; 1104 cartData.forEach(function(item) { 1105 if (item.currency == targetCurrency) { 1106 langItems.push({ 1107 package_id: item.brand_product_id, 1108 brand_product_name: item.brand_product_name || item.title || '', 1109 product_price: item.brand_product_price || item.price || 0, 1110 currency: item.currency == 1 ? 'TWD' : (currentLang === 'en' ? 'USD' : 'RMB'), 1111 checked: item.checked == 1, 1112 brand: item.brand || 1, 1113 product_url: item.product_url || '', 1114 report_number: item.report_number || '' 1115 }); 1116 } 1117 }); 1118
1119 setCookie(currentCookieName, JSON.stringify(langItems), 525600); 1120 updateCartDisplay(langItems); 1121 } 1122 }) 1123 .catch(function(error) {}); 1124 1125 cartDropdown.addEventListener('click', function(e) { 1126 if (e.target.classList.contains('cart-item-remove')) { 1127 const item = e.target.closest('.cart-item'); 1128 if (item) { 1129 const packageId = item.dataset.packageId; 1130 1131 const confirmMessage = '確èªå¾è³¼ç©è»åªé¤æ¤åååï¼'; 1132 if (!confirm(confirmMessage)) { 1133 return; 1134 } 1135 1136 item.style.transition = 'all 0.3s ease'; 1137 item.style.opacity = '0'; 1138 item.style.transform = 'translateX(20px)'; 1139 1140 setTimeout(function() { 1141 removeCookieItem(packageId); 1142 }, 300); 1143 } 1144 } 1145 }); 1146 1147 function removeCookieItem(packageId) { 1148 fetch('/api/cart/removePackage', { 1149 method: 'POST', 1150 headers: { 1151 'Content-Type': 'application/json', 1152 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content 1153 }, 1154 body: JSON.stringify({ package_id: packageId }) 1155 }) 1156 .then(function(response) { return response.json(); }) 1157 .then(function(data) { 1158 if (data.error === 0) { 1159 const cartCookieName = getCartCookieName(); 1160 const guestCart = getCookie(cartCookieName); 1161 if (guestCart) { 1162 try { 1163 let cartData = JSON.parse(guestCart); 1164 cartData = cartData.filter(function(item) { return item.package_id != packageId; }); 1165 setCookie(cartCookieName, JSON.stringify(cartData), 525600); 1166 updateCartDisplay(cartData); 1167 restoreCartButton(packageId); 1168 } catch (e) { 1169 console.error('æ´æ° Cookie 失æ:', e); 1170 } 1171 } 1172 } 1173 }) 1174 .catch(function(error) { 1175 console.error('ç§»é¤å¤±æ:', error); 1176 }); 1177 } 1178 1179 function removeFromCart(packageId) { 1180 fetch('/api/cart/removePackage', { 1181 method: 'POST', 1182 headers: { 1183 'Content-Type': 'application/json', 1184 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content 1185 }, 1186 body: JSON.stringify({ package_id: packageId }) 1187 }) 1188 .then(function(response) { return response.json(); }) 1189 .then(function(data) { 1190 if (data.error === 0) { 1191 const userId = ''; 1192 if (userId) { 1193 document.cookie = 'user_cart_' + userId + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; 1194 } 1195 loadCartData(); 1196 restoreCartButton(packageId); 1197 } 1198 }) 1199 .catch(function(error) { 1200 console.error('ç§»é¤å¤±æ:', error); 1201 }); 1202 } 1203 1204 function restoreCartButton(packageId) { 1205 if (!packageId) return; 1206 1207 document.querySelectorAll('[data-cart-package="' + packageId + '"]').forEach(function(button) { 1208 const cartAction = (button.getAttribute('data-cart') || '').toLowerCase(); 1209 button.classList.remove('added'); 1210 1211 if (cartAction !== 'add_to_cart' && cartAction !== 'add_cart') return; 1212 1213 button.disabled = false; 1214 const img = button.querySelector('img'); 1215 const span = button.querySelector('span'); 1216 const addToCartText = 'å å ¥è³¼ç©è»'; 1217 1218 if (img) { 1219 img.src = button.classList.contains('cart-icon-btn') ? '/images/addcart-g.svg' : '/images/addcart.svg'; 1220 img.alt = 'addcart'; 1221 if (span) span.textContent = addToCartText; 1222 }
1222 else if (span) { 1223 span.textContent = addToCartText; 1224 } else if (button.tagName.toLowerCase() === 'button' || button.tagName.toLowerCase() === 'a') { 1225 if (button.id === 'btnAddToCart') { 1226 button.innerHTML = '<i class="fa fa-shopping-cart" aria-hidden="true"></i><span>' + addToCartText + '</span>'; 1227 } else if (button.classList.contains('add-cart-btn')) { 1228 button.innerHTML = '<img src="/images/addcart.svg" alt="addcart"><span>' + addToCartText + '</span>'; 1229 } else { 1230 button.innerHTML = '<span>' + addToCartText + '</span>'; 1231 } 1232 } else { 1233 button.textContent = addToCartText; 1234 } 1235 }); 1236 } 1237 1238 function mergeGuestCartOnLogin() { 1239 const cartCookieName = getCartCookieName(); 1240 const guestCart = getCookie(cartCookieName); 1241 if (!guestCart) { 1242 return; 1243 } 1244 1245 try { 1246 const cartData = JSON.parse(guestCart); 1247 if (cartData.length === 0) { 1248 document.cookie = cartCookieName + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; 1249 return; 1250 } 1251 1252 let mergePromises = cartData.map(function(item) { 1253 return fetch('/api/cart/addPackage', { 1254 method: 'POST', 1255 headers: { 1256 'Content-Type': 'application/json', 1257 'X-CSRF-TOKEN': 'Q8GXLsXfTvwdlhlmVQDNCWg6qM6HE4FZN2PRzPlH' 1258 }, 1259 body: JSON.stringify({ 1260 package_id: item.package_id, 1261 report_number: item.report_number, 1262 checked: 'true' 1263 }) 1264 }) 1265 .then(function(response) { return response.json(); }) 1266 .then(function(json) { 1267 if (json.error === 0) { 1268 return { success: true, item: item }; 1269 } else if (json.error === 2) { 1270 return { success: true, item: item, duplicate: true }; 1271 } else { 1272 return { success: false, item: item }; 1273 } 1274 }) 1275 .catch(function(error) { 1276 console.error('åä½µååé¯èª¤:', item.package_name, error); 1277 return { success: false, item: item }; 1278 }); 1279 }); 1280 1281 Promise.all(mergePromises).then(function(results) { 1282 document.cookie = cartCookieName + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; 1283 1284 const userId = ''; 1285 if (userId) { 1286 document.cookie = 'user_cart_' + userId + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; 1287 } 1288 1289 loadCartData(); 1290 }); 1291 1292 } catch (e) { 1293 console.error('å併訪客購ç©è»å¤±æ:', e); 1294 document.cookie = cartCookieName + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; 1295 } 1296 } 1297 }); 1298 1299 (function () { 1300 var _lastCartRefresh = 0; 1301 var CART_REFRESH_INTERVAL = 10000; 1302 1303 function syncGuestCartFromExternal() { 1304 var csrfMeta = document.querySelector('meta[name="csrf-token"]'); 1305 fetch('/api/cart/checkGuestCartSync', { 1306 method: 'GET', 1307 headers: { 1308 'Content-Type': 'application/json', 1309 'X-CSRF-TOKEN': csrfMeta ? csrfMeta.getAttribute('content') : '' 1310 } 1311 }) 1312 .then(function(response) { return response.json(); }) 1313 .then(function(data) { 1314 if (data.error === 0 && data.cart_data) { 1315 var currentCookieName = getCartCookieName(); 1316 var currentLang = 'tw'; 1317 var targetCurrency = currentLang === 'tw' ? 1 : 2; 1318 var langItems = []; 1319 data.cart_data.forEach(function(item) { 1320 if (item.currency == targetCurrency) { 1321 langItems.push({ 1322 package_id: item.brand_product_id, 1323 brand_product_name: item.brand_product_name || item.title || '', 1324 product_price: item.brand_product_price || item.price || 0, 1325 currency: item.currency == 1 ? 'TWD' : (currentLang === 'en' ? 'USD' : 'RMB'), 1326 checked: item.checked == 1, 1327 brand: item.brand || 1, 1328 product_url: item.product_url || '', 1329 report_number: item.report_number || '' 1330 }); 1331 } 1332 });
1333 setCookie(currentCookieName, JSON.stringify(langItems), 525600); 1334 updateCartDisplay(langItems); 1335 } else { 1336 window.loadCartData(); 1337 } 1338 }) 1339 .catch(function() { 1340 window.loadCartData(); 1341 }); 1342 } 1343 1344 document.addEventListener('DOMContentLoaded', function() { 1345 var wrapper = document.querySelector('.cart-button-wrapper'); 1346 if (!wrapper) return; 1347 1348 wrapper.addEventListener('mouseenter', function() { 1349 var now = Date.now(); 1350 if (now - _lastCartRefresh < CART_REFRESH_INTERVAL) return; 1351 _lastCartRefresh = now; 1352 1353 syncGuestCartFromExternal(); 1354 }); 1355 }); 1356 })(); 1357 1358 window.clearUserCartCookie = function() { 1359 try { 1360 document.cookie = 'cart_tw=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; 1361 document.cookie = 'cart_en=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; 1362 document.cookie = 'guest_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; 1363 } catch (e) { 1364 try { document.cookie = 'cart_tw=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; } catch (e) {} 1365 try { document.cookie = 'cart_en=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; } catch (e) {} 1366 try { document.cookie = 'guest_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; } catch (e) {} 1367 } 1368 }; 1369</script>
1369 1370
1371<script> 1372 // èªåçºæå /api/cart/toList çé£çµè window.open/location.assign éå guest_id 1373 (function () { 1374 function safeGetCookie(name) { 1375 try { 1376 if (typeof window.getCookie === 'function') return window.getCookie(name); 1377 var v = document.cookie.match('(^|;)\\s*' + name + '\\s*=\\s*([^;]+)'); 1378 return v ? decodeURIComponent(v.pop()) : null; 1379 } catch (e) { return null; } 1380 } 1381 1382 function appendGuestIdToUrl(url) { 1383 try { 1384 if (!url || url.indexOf('/api/cart/toList') === -1) return url; 1385 var guest = safeGetCookie('guest_id'); 1386 if (!guest) return url; 1387 if (url.indexOf('guest_id=') !== -1) return url; 1388 var sep = url.indexOf('?') === -1 ? '?' : '&'; 1389 return url + sep + 'guest_id=' + encodeURIComponent(guest); 1390 } catch (e) { return url; } 1391 } 1392 1393 document.addEventListener('click', function(e){ 1394 var a = e.target.closest && e.target.closest('a[href]'); 1395 if (!a) return; 1396 var href = a.getAttribute('href'); 1397 if (!href) return; 1398 if (href.indexOf('/api/cart/toList') === -1) return; 1399 1400 var newHref = appendGuestIdToUrl(href); 1401 if (newHref === href) return; 1402 1403 e.preventDefault(); 1404 if (e.ctrlKey || e.metaKey || a.target === '_blank' || e.button === 1) { 1405 window.open(newHref, '_blank'); 1406 return; 1407 } 1408 1409 window.location.href = newHref; 1410 }, true); 1411 1412 (function () { 1413 var origOpen = window.open; 1414 window.open = function(url, name, specs){ 1415 try { if (typeof url === 'string') url = appendGuestIdToUrl(url); } catch (e) {}
1416 return origOpen.call(window, url, name, specs); 1417 }; 1418 })(); 1419 1420 try { 1421 var origAssign = window.location.assign; 1422 window.location.assign = function(url){ 1423 try { if (typeof url === 'string') url = appendGuestIdToUrl(url); } catch (e) {} 1424 return origAssign.call(window.location, url); 1425 }; 1426 } catch (e) {} 1427 })(); 1428</script>
1428 1429 <!-- guest_id cookie already set by shared script at top of file --> 1430 </div> 1431</header> 1432 1433 <div class="header-title ken-burn-center white" data-parallax="scroll" data-position="top" data-natural-height="650" data-natural-width="1920" 1434 data-image-src="https://www.trendforce.com.tw/images/bg02.gif"> 1435 1436 <div class="header-title-bg"> 1437 1438 1439 <div class="title-base text-left"> 1440 <h1> è¯çµ¡æå </h1> 1441 </div> 1442 1443 </div> 1444</div> 1445 1446 1447 1448 1449 <div class="section-bg-color"> 1450 <div class="content breadcrumb-text"> 1451 <ul> 1452 <li><a href="/">é¦é </a></li> 1453 <li class="active"> è¯çµ¡æå </li> 1454 </ul> 1455 </div> 1456 </div> 1457 1458 <div class="section-empty section-item"> 1459
1459<script> 1460 $( document ).ready(function() { 1461 1462 getContactId(); 1463 1464 function getContactId(){ 1465 // è¨å®è¯çµ¡äºº 1466 var url = $('#contact_us').val('action')[0]['action']; 1467 $('#nights').change(function() { 1468 var selectedItemID = $(this).val(); 1469 var new_url = url + selectedItemID; 1470 $('#contact_us').val('action')[0]['action'] = new_url; 1471 }); 1472 } 1473 1474 $('#contact_btn').click( getContactId() ); 1475 1476 }); 1477</script>
1477 1478<div class="container content"> 1479 <div class="col-md-12"> 1480 <div class="tab-box pills" data-tab-anima="fade-right"> 1481 <ul id="contact_btn" class="nav nav-pills nav-justified contact-tab-style"> 1482 <li 1483 class="current-other active "> 1484 <a href="https://www.trendforce.com.tw/contact/reporting"> 1485 <i class="fa fa-newspaper-o" aria-hidden="true" style=""></i> å ±å諮詢 1486 </a> 1487 </li> 1488 <li 1489 class="current-other "> 1490 <a href="https://www.trendforce.com.tw/contact/interview"> 1491 <i class="fa fa-camera" aria-hidden="true"></i> æ¡è¨ªéæ± 1492 </a> 1493 </li> 1494 <li 1495 class="current-other "> 1496 <a href="https://www.trendforce.com.tw/contact/marketing"> 1497 <i class="fa fa-bullhorn" aria-hidden="true"></i> è¡é·åä½ 1498 </a> 1499 </li> 1500 </ul> 1501 <div class="panel active fade-right" 1502 style="transition-duration: 300ms; animation-duration: 300ms; transition-timing-function: ease; transition-delay: 0ms;"> 1503 1504 1505 <p class="contact-textbox margin-b-50"> 1506 è¥æ¨æè³¼è²·å ±åãæ´½è©¢æå¡æ¹æ¡çéæ±æç¸éåé¡ï¼æ¡è¿ç䏿¨çè¯ç¹«æ¹å¼ï¼æåå°ç¡å¿«èæ¨è¯ç¹«ã 1507</p> 1508 1509 1510 <div class="col-md-9 col-sm-12 margin-b-60"> 1511 <h2>表å®</h2> 1512 <p class="text-color no-margins">æåæä»¥æå¿«çéåº¦èæ¨è¯ç¹«</p> 1513 1514 <hr class="space s"> 1515 <form id="contact_us" action="/contact/reporting/post" class="form-box form-ajax" method="post"> 1516 <input type="hidden" name="_token" value="Q8GXLsXfTvwdlhlmVQDNCWg6qM6HE4FZN2PRzPlH"> 1517 <div class="row"> 1518 <div class="col-md-6"> 1519 <p>å§å</p> 1520 <input id="name" name="name" placeholder="" type="text" class="form-control form-value" required=""> 1521 </div> 1522 <div class="col-md-6"> 1523 <p>å ¬å¸</p> 1524 <input id="company" name="company" placeholder="" type="text" class="form-control form-value" required=""> 1525 </div> 1526 </div> 1527 <hr class="space s"> 1528 1529 <div class="row"> 1530 <div class="col-md-6"> 1531 <p>é»è©±</p> 1532 <input id="phone" name="phone" placeholder="" type="text" class="form-control form-value" required=""> 1533 </div> 1534 <div class="col-md-6"> 1535 <p>Email</p> 1536 <input id="email" name="email" placeholder="" type="email" class="form-control form-value" required=""> 1537 </div> 1538 </div> 1539 <hr class="space s"> 1540 <p>è©¢åé å</p> 1541 <select name="category" id="category" class="form-control form-value" required=""> 1542 <option value="1" selected >åå°é«</option> 1543 <option value="7" >顯示å¨</option> 1544 <option value="14" >LED</option> 1545 <option value="21" >è½æº</option> 1546 <option value="24" >æ¶è²»æ§é»å</option> 1547 <option value="32" >éè¨</option> 1548 <option value="37" >æ°èç§æ</option> 1549 <option value="53" >總é«ç¶æ¿</option> 1550 <option value="63" >Selected Topics</option> 1551 <option value="0">å ¶ä»</option> 1552 </select> 1553 <hr class="space s"> 1554 1555 <div class="row"> 1556 <div class="col-md-12"> 1557 <p>主æ¨</p> 1558 <input id="subject" name="subject" placeholder="" type="text" class="form-control form-value" 1559 required> 1560 </div> 1561 </div> 1562 <hr class="space s"> 1563 <div class="row"> 1564 <div class="col-md-12"> 1565 <p>è¨æ¯æ¬ä½</p> 1566 <textarea id="message" name="message" class="form-control form-value" required></textarea> 1567 </div> 1568 <hr class="space s"> 1569 <div class="col-md-12 text-center"> 1570 <button class="btn btn-lg g-recaptcha" 1571 type="submit" 1572 data-sitekey="6LeXsBYmAAAAACtiRX4fJHLQYceYn-RyZWrUcURv" 1573 data-callback="contactSubmitCallback" 1574 data-action="contactSubmit"> 1575 éåºè¨æ¯ 1576 <i class="fa fa-arrow-right mr-1"></i> 1577 </button> 1578 </div> 1579 </div> 1580 1581 1582 </form> 1583</div>
vendor: 78 bytes, lines 1583-1585
1583 1584 1585<script src="https://www.google.com/recaptcha/api.js" async defer></script>
1586<script> 1587 function contactSubmitCallback(token) { 1588 const form = document.getElementById('contact_us'); 1589 if (form.reportValidity()) { 1590 form.submit(); 1591 } 1592 } 1593</script>
1593 <div class="col-md-3 col-sm-12"> 1594 <hr class="space visible-xs"> 1595 <h2>ç´æ¥è¯ç¹«</h2> 1596 <p class="text-color no-margins">å¯ä»¥ä½¿ç¨ä»¥ä¸è¯ç¹«æ¹å¼èæåè¯ç¹«</p> 1597 <hr class="space s"> 1598 <hr class="space s"> 1599 <div class="list-items text-left"> 1600 1601 <div class="list-item"> 1602 <div class="row"> 1603 <div class="col-md-12"> 1604 <h3 class="color-green margin-b-5">éè¨æ¨æç¨ç§æç ç©¶è</h3> 1605 <h3>TRI_MI</h3> 1606 1607 <p><i class="fa fa-envelope" aria-hidden="true"></i> 1608 <a class="link-color" href="mailto:[email protected]"> [email protected]</a> 1609 </p> 1610 </div> 1611 </div> 1612 </div> 1613 <div class="list-item"> 1614 <div class="row"> 1615 <div class="col-md-12"> 1616 <h3 class="color-green margin-b-5">æ°è½æºç ç©¶è</h3> 1617 <h3>GER_MI</h3> 1618 1619 <p><i class="fa fa-envelope" aria-hidden="true"></i> 1620 <a class="link-color" href="mailto:[email protected]"> [email protected]</a> 1621 </p> 1622 </div> 1623 </div> 1624 </div> 1625 <div class="list-item"> 1626 <div class="row"> 1627 <div class="col-md-12"> 1628 <h3 class="color-green margin-b-5">顯示å¨ç ç©¶è</h3> 1629 <h3>DR_MI</h3> 1630 1631 <p><i class="fa fa-envelope" aria-hidden="true"></i> 1632 <a class="link-color" href="mailto:[email protected]"> [email protected]</a> 1633 </p> 1634 </div> 1635 </div> 1636 </div> 1637 <div class="list-item"> 1638 <div class="row"> 1639 <div class="col-md-12"> 1640 <h3 class="color-green margin-b-5">åå°é«ç ç©¶è</h3> 1641 <h3>SR_MI</h3> 1642 1643 <p><i class="fa fa-envelope" aria-hidden="true"></i> 1644 <a class="link-color" href="mailto:[email protected]"> [email protected]</a> 1645 </p> 1646 </div> 1647 </div> 1648 </div> 1649 <div class="list-item"> 1650 <div class="row"> 1651 <div class="col-md-12"> 1652 <h3 class="color-green margin-b-5">å é»ç ç©¶è</h3> 1653 <h3>OR_MI</h3> 1654 1655 <p><i class="fa fa-envelope" aria-hidden="true"></i> 1656 <a class="link-color" href="mailto:[email protected]"> [email protected]</a> 1657 </p> 1658 </div> 1659 </div> 1660 </div> 1661 1662 </div> 1663 <hr class="space s"> 1664 <p style="font-size: 13px;"><i class="fa fa-phone" aria-hidden="true"></i> 02-7702-6888</p> 1665 <p style="font-size: 13px;"><i class="fa fa-map-marker" aria-hidden="true"></i> 10489èºåå¸ä¸å±±åå京æ±è·¯ä¸æ®µ68è</p> 1666 1667</div> 1668 <div class="col-md-12"> 1669 <hr class="space l"> 1670 <div id="ad-contact" class="ad-box"> 1671 <!-- /23101350658/TF_TW_PC_Contact_Bottom01_728x90 --> 1672<div id='div-gpt-ad-1758866277261-0' style='min-width: 728px; min-height: 90px;'> 1673
1673<script> 1674 googletag.cmd.push(function() { googletag.display('div-gpt-ad-1758866277261-0'); }); 1675 </script>
1675 1676</div> 1677 </div> 1678 </div> 1679 1680 </div> 1681 </div> 1682 </div> 1683</div> 1684 </div> 1685 1686 <!-- Footer --> 1687<footer class="site-footer"> 1688 <nav class="footer-nav"> 1689 <ul> 1690 <li><a href="/about">éæ¼æå</a></li> 1691 <li><a href="/research">ç ç©¶å ±å</a></li> 1692 <li><a href="/research-tags">Tags</a></li> 1693 <li><a href="/insights">Industry Insights</a></li> 1694 <li><a href="/about/terms" rel="nofollow">ä½¿ç¨æ¢æ¬¾</a></li> 1695 <li><a href="/about/privacy" rel="nofollow">é±ç§æ¬æ¿ç</a></li> 1696 <li><a href="/about/MImember_agreement" rel="nofollow">æå¡æåæ¢æ¬¾</a></li> 1697 <li><a href="https://www.104.com.tw/company/wf1r2j4" target="_blank" rel="nofollow">人ææå</a></li> 1698 <li><a href="/contact/reporting">è¯çµ¡æå</a></li> 1699 </ul> 1700 </nav> 1701 1702 <!-- <div class="footer-subscribe-wrap"> 1703 <h2>è¨é±ææ°ç¢æ¥æ´å¯</h2> 1704 <iframe src="https://insights.trendforce.com/embed?transparent=1&light=1&no_wrapper=1" width="100%" height="120" style="border: 0; background: transparent; margin: 15px" frameborder="0" scrolling="no" loading="lazy"></iframe> 1705 </div> --> 1706 1707 <div class="footer-subscribe-wrap"> 1708 <!-- DEBUG lang=zh-tw | env=3 | host=www.trendforce.com.tw --> 1709 <div> 1710 <h2>è¨é±ææ°ç¢æ¥æ´å¯</h2> 1711 <form id="footer-subscribe-form" action="https://insights.trendforce.com/api/v1/free" method="POST" 1712 target="subscribe-frame" class="custom-subscribe-form"> 1713 <input type="hidden" name="source" value="embed"> 1714 <div class="subscribe-input-group"> 1715 <input type="email" name="email" placeholder="è«è¼¸å ¥æ¨ç Email" required 1716 class="subscribe-input"> 1717 <button type="submit" class="subscribe-btn" data-act-pos="footer" 1718 data-act-type="substack">è¨é±</button> 1719 </div> 1720 <div id="footer-subscribe-msg" style="display:none; margin-top: 8px; font-size: 14px;"></div> 1721 </form> 1722 <iframe id="subscribe-frame" name="subscribe-frame" style="display:none" aria-hidden="true"></iframe> 1723 </div> 1724 1725 <div> 1726 <div class="social-icon-wrap d-flex gap-3"> 1727 <a class="social-icon" href="https://insights.trendforce.com/" target="_blank"> 1728 <img src="/images/icon-substack-w.svg" alt="substack"> 1729 </a> 1730 1731 <a class="social-icon" href="https://x.com/trendforce" target="_blank"> 1732 <img src="/images/icon-x-w.svg" alt="x"> 1733 </a> 1734 1735 <a class="social-icon" href="https://www.linkedin.com/company/trendforce-éé¦ç§æ/" target="_blank"> 1736 <img src="/images/icon-linkedin-w.svg" alt="linkedin"> 1737 </a> 1738 1739 <a class="social-icon" href="https://www.facebook.com/TrendForce.tw" target="_blank"> 1740 <img src="/images/icon-facebook-w.svg" alt="facebook"> 1741 </a> 1742 </div> 1743 </div> 1744 </div> 1745 1746 <ul class="footer-logo-wrap"> 1747 <li class="footer-logo"> 1748 <a href="/"><img src="/images/TF_logo_w.svg" loading="lazy" alt="TrendForce"></a> 1749 </li> 1750 1751 1752 1753 <li class="footer-lang-social-row d-flex align-items-center justify-content-between"> 1754 <div class="header_language-wrap"> 1755 <a class="language-button active" href="javascript:void(0)"> 1756 ç¹é«ä¸æ <i class="fa fa-caret-down" aria-hidden="true"></i> 1757 </a> 1758 <ul class="header_language-content"> 1759 <li><a href="https://www.trendforce.com/">English</a></li> 1760 <li><a href="https://www.trendforce.cn/">ç®ä½ä¸æ</a></li> 1761 </ul> 1762 </div> 1763 1764 </li> 1765 <li class="footer-copyright">© 2026 TrendForce Corp. All rights reserved</li> 1766 </ul> 1767</footer> 1768 1769<!-- Footer Contact Us Popup --> 1770<div id="contact-sales" class="box-lightbox "> 1771 <h3 class="text-color fw-bold text-center">è¯çµ¡æå</h3> 1772 <hr> 1773 <form id="contact-us-popup-form"> 1774 <div class="form-group"> 1775 <label for="contactFromEmail">æ¨çEmail</label> 1776 <input type="email" class="form-control" id="contactFromEmail" placeholder="Email" name="from" 1777 value=" "> 1778 </div> 1779 <div class="form-group"> 1780 <label for="exampleInputPassword1">çè¨</label> 1781 <textarea class="form-control" rows="5" id="contactMessage" name="message" maxlength="300" 1782 placeholder="è«ç䏿¨çéæ±, æåå°ç¡å¿«èæ¨è¯ç¹«" 1783 style="resize: none;"></textarea> 1784 </div> 1785 <div class="text-center"> 1786 <button class="btn btn-default w-100 margin-b-10 font-size-16" type="button" id="btn-contact-inquery"> 1787 éåº 1788 </button> 1789 <button style="background: none; border: none;" type="button" id="btn-contact-close"> 1790 åæ¶ 1791 </button> 1792 </div> 1793 </form> 1794</div> 1795
1796<!-- Membership Contact Us Popup (ä½¿ç¨ simple-inquiry) --> 1797<div id="contact-sales-membership" class="box-lightbox "> 1798 <h3 class="text-color fw-bold text-center">è¯çµ¡æå</h3> 1799 <hr> 1800 <form id="contact-us-membership-form"> 1801 <input type="hidden" id="contactPackageIdMembership" name="package_id" value=""> 1802 <div class="form-group"> 1803 <label for="contactFromEmailMembership">æ¨çEmail</label> 1804 <input type="email" class="form-control" id="contactFromEmailMembership" placeholder="Email" name="email" 1805 value=" "> 1806 </div> 1807 <div class="form-group"> 1808 <label for="contactMessageMembership">çè¨</label> 1809 <textarea class="form-control" rows="5" id="contactMessageMembership" name="message" maxlength="300" 1810 placeholder="è«ç䏿¨çéæ±, æåå°ç¡å¿«èæ¨è¯ç¹«" 1811 style="resize: none;"></textarea> 1812 </div> 1813 <div class="text-center"> 1814 <button class="btn btn-default w-100 margin-b-10 font-size-16" type="button" id="btn-contact-membership-inquery"> 1815 éåº 1816 </button> 1817 <button style="background: none; border: none;" type="button" id="btn-contact-membership-close"> 1818 åæ¶ 1819 </button> 1820 </div> 1821 </form> 1822</div> 1823
1824<script src="/js/imagesloaded.min.js"></script>
1824 1825
1825<script src="/js/bootstrap/js/bootstrap.min.js"></script>
vendor: 1 bytes, line 1825
1825
1826<script src="/js/jquery.tab-accordion.js"></script>
vendor: 1 bytes, line 1826
1826
1827<script src="/js/parallax.min.js"></script>
vendor: 1 bytes, line 1827
1827
1828<script src="/js/flexslider/jquery.flexslider-min.js"></script>
vendor: 1 bytes, line 1828
1828
1829<script async src="/js/isotope.min.js"></script>
1829 1830
1831<script async src="/js/jquery.progress-counter.js"></script>
vendor: 1 bytes, line 1831
1831
1832<script async src="/js/bootstrap/js/bootstrap.popover.min.js"></script>
vendor: 1 bytes, line 1832
1832
1833<script src="/js/jquery.magnific-popup.min.js"></script>
vendor: 1 bytes, line 1833
1833
1834<script src="/js/social.stream.min.js"></script>
vendor: 1 bytes, line 1834
1834
1835<script src="/js/jquery.slimscroll.min.js"></script>
vendor: 1 bytes, line 1835
1835
1836<script src="/js/jquery.flipster.min.js"></script>
vendor: 63 bytes, lines 1836-1838
1836 1837<script 1838 src="https://www.google.com/recaptcha/api.js?render=
18386LeXsBYmAAAAACtiRX4fJHLQYceYn-RyZWrUcURv
vendor: 12 bytes, line 1838
1838"></script>
1839<script> 1840 $(document).ready(function () { 1841 $('#btn-contact-inquery').on("click", function () { 1842 const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); 1843 const transError = { 1844 email: 'ä¿¡ç®± å¿ é æ¯ææç E-mailã', 1845 message: 'çè¨ä¸å¯çºç©ºï¼', 1846 }; 1847 1848 const form = document.getElementById('contact-us-popup-form'); 1849 let fromMail = form.from.value; 1850 let emailValid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(fromMail); 1851 if (!emailValid) { 1852 alert(transError.email); 1853 return false; 1854 } 1855 if (form.message.value.trim() === '' || /^\s*$/.test(form.message.value)) { 1856 alert(transError.message); 1857 return false; 1858 } 1859 1860 $(this).attr('disabled', true); 1861 1862 grecaptcha.ready(function () { 1863 grecaptcha.execute('6LeXsBYmAAAAACtiRX4fJHLQYceYn-RyZWrUcURv', { action: 'contactSales' }).then(function (token) { 1864 fetch('/api/contact/inquiry', { 1865 method: 'POST', 1866 headers: { 1867 'X-Requested-With': 'XMLHttpRequest', 1868 'Content-Type': 'application/json', 1869 'X-CSRF-TOKEN': csrfToken, 1870 }, 1871 body: JSON.stringify({ 1872 from: document.getElementById('contactFromEmail').value, 1873 message: document.getElementById('contactMessage').value, 1874 recaptcha: token, 1875 url: window.location.href 1876 }), 1877 }) 1878 .then(res => res.json()) 1879 .then(data => { 1880 console.log('json', data); 1881 $('#btn-contact-inquery').attr('disabled', false); 1882 if (data.error == 0) { 1883 $.magnificPopup.close(); 1884 } 1885 alert(data.message); 1886 }) 1887 .catch((error) => { 1888 console.log('error', error); 1889 alert('Error: sent failed'); 1890 $('#btn-contact-inquery').attr('disabled', false); 1891 }); 1892 }); 1893 }); 1894 }); 1895 1896 $('#btn-contact-close').on("click", function () { 1897 $.magnificPopup.close(); 1898 }); 1899 1900 // æå¡æ¹æ¡å°ç¨ç simple-inquiry é輯 1901 $('#btn-contact-membership-inquery').on("click", function () { 1902 const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); 1903 const transError = { 1904 email: 'ä¿¡ç®± å¿ é æ¯ææç E-mailã', 1905 message: 'çè¨ä¸å¯çºç©ºï¼', 1906 }; 1907 1908 const form = document.getElementById('contact-us-membership-form'); 1909 let emailVal = form.email.value; 1910 let emailValid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(emailVal); 1911 if (!emailValid) { 1912 alert(transError.email); 1913 return false; 1914 } 1915 if (form.message.value.trim() === '' || /^\s*$/.test(form.message.value)) { 1916 alert(transError.message); 1917 return false; 1918 } 1919 1920 $(this).attr('disabled', true); 1921 1922 fetch('/api/contact/simple-inquiry', { 1923 method: 'POST', 1924 headers: { 1925 'X-Requested-With': 'XMLHttpRequest', 1926 'Content-Type': 'application/json', 1927 'X-CSRF-TOKEN': csrfToken, 1928 }, 1929 body: JSON.stringify({ 1930 email: document.getElementById('contactFromEmailMembership').value, 1931 message: document.getElementById('contactMessageMembership').value, 1932 package_id: document.getElementById('contactPackageIdMembership').value || null 1933 }), 1934 }) 1935 .then(res => res.json()) 1936 .then(data => { 1937 console.log('json', data); 1938 $('#btn-contact-membership-inquery').attr('disabled', false); 1939 if (data.error == 0) { 1940 $.magnificPopup.close(); 1941 } 1942 alert(data.message); 1943 }) 1944 .catch((error) => { 1945 console.log('error', error); 1946 alert('Error: sent failed'); 1947 $('#btn-contact-membership-inquery').attr('disabled', false); 1948 }); 1949 }); 1950 1951 $('#btn-contact-membership-close').on("click", function () { 1952 $.magnificPopup.close(); 1953 $('#contactPackageIdMembership').val(''); 1954 }); 1955 1956 // æå¡æ¹æ¡é é¢ï¼å¾æéåå¾ package_id ä¸¦å¡«å ¥é±èæ¬ä½ 1957 $(document).on('mousedown touchstart click', '[href="#contact-sales-membership"], .membership-contactus-btn', function (e) { 1958 var $el = $(this); 1959 var pkg = $el.data('package-id') || $el.attr('data-package-id') || $el.data('cart-package') || $el.attr('data-cart-package'); 1960 if (!pkg) { 1961 var $a = $el.closest('a[href="#contact-sales-membership"]'); 1962 pkg = $a.data('package-id') || $a.attr('data-package-id') || $a.data('cart-package') || $a.attr('data-cart-package'); 1963 } 1964 $('#contactPackageIdMembership').val(pkg ? pkg : ''); 1965 }); 1966 1967 // Footer é»åå ±è¨é±ï¼ç¨åç form submit + hidden iframe é¿å CORS åé¡ 1968 $('#footer-subscribe-form').on('submit', function () { 1969 var $form = $(this); 1970 var $btn = $form.find('.subscribe-btn'); 1971 var $msg = $('#footer-subscribe-msg'); 1972 1973 $btn.prop('disabled', true).text('éåºä¸...'); 1974 $msg.hide(); 1975 1976 $('#subscribe-frame').off('load').one('load', function () { 1977 $msg.text('æè¬æ¨çè¨é±ï¼è«æª¢æ¥ Email 信箱以確èªè¨é±ã') 1978 .css('color', '#81B743').show(); 1979 $form.find('input[name="email"]').val(''); 1980 $btn.prop('disabled', false).text('è¨é±'); 1981 }); 1982 }); 1983 1984 // Footer èªç³»åæä¸æï¼è· Header é£çµæ¯åèªç¨ç«ç DOMï¼Header ç 1985 // document.querySelector('.language-button.active') åªææå°ç¬¬ä¸åï¼ 1986 // é裡å¦å¤ç¶ä¸ä»½ãéå®å¨ .site-footer ç¯åå §ï¼ 1987 var $footerLanguageIcon = $('.site-footer .language-button'); 1988 var $footerLanguageContent = $('.site-footer .header_language-content'); 1989 1990 $footerLanguageIcon.on('click', function () { 1991 $footerLanguageContent.css('display', 'flex'); 1992 }); 1993 1994 $footerLanguageContent.on('mouseleave', function () { 1995 $footerLanguageContent.css('display', 'none'); 1996 }); 1997 1998 }); 1999</script>
1999 2000 2001 </body> 2002</html>
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.