1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 8 <title>TopOn | Boost Your Monetization Revenue of Mobile Ads</title> 9 10 <meta name="keywords" content="TopOn, Mediation Monetization, Mediation Platform,Advertising Monetization, Mobile Game Monetization, App Monetization, Mobile Monetization, Game Monetization, Overseas Monetization, Developer Monetization, Overseas Advertising Monetization, Advertising Mediation Platform, Advertising Space Optimization Management, Mobile Advertising Mediation Management Tool, Game Advertising Mediation, Overseas Mobile Game Advertising Monetization, iOS Advertising, Android Advertising, Unity Advertising, Cocos Advertising, Rewarded Video Advertising Mediation, Advertising Monetization Revenue Monitoring."> 11 12 <meta name="description" content="Description"> 13 <meta name="google-site-verification" content="FZ-hFP1MSO8RlZCJ7_eZ6duEcF-XE9wNZxVF6LQbjko" /> 14 15 16 <link rel="icon" href="/favicon.ico?t=202107231550" type="image/x-icon" /> 17 <link rel="shortcut icon" href="/favicon.ico?t=202107231550" type="image/x-icon" /> 18 <!-- Styles --> 19 <link href="https://www.toponad.net/css/bootstrap.4.min.css" rel="stylesheet"> 20 <link href="https://www.toponad.net/css/swiper.min.css" rel="stylesheet"> 21 22 <link href="https://www.toponad.net/css/subscribe.css" rel="stylesheet"> 23 <link href="https://www.toponad.net/css/index.css?t=2025012302" rel="stylesheet"> 24 <link href="https://www.toponad.net/css/sale-smartly.css" rel="stylesheet"> 25 <style> 26 .Notice { 27 width:1920px; 28 height:35px; 29 background:rgba(255,255,255,1); 30 background-color:#FFFFFF; 31 position:absolute; 32 left:0px; 33 top:71px; 34 35 } 36 .Notice__neiron { 37 position:relative; 38 /* background-color:red; */ 39 height:100% 40 } 41 42 .Notice__wenzi { 43 height:14px; 44 font-size:14px; 45 font-family:PingFang SC; 46 font-weight:400; 47 color:rgba(102,102,102,1); 48 line-height:30px; 49 display:block; 50 } 51 52 .Notice__wenhao { 53 width:16px; 54 height:16px; 55 background-color:#FFB400; 56 display:block; 57 position:absolute; 58 left:-12px; 59 top:8px; 60 border-radius:50%; 61 text-align:center; 62 line-height:16px; 63 color:#FFFFFF 64 65 } 66 .Notice__chayue { 67 position:absolute; 68 left:363px; 69 top:4px; 70 height:16px; 71 font-size:16px; 72 display:block; 73 width:60px; 74 height:16px; 75 } 76 77 </style> 78 </head> 79 <body class="en"> 80 <header> 81 <div class="container"> 82 <nav class="navbar navbar-expand"> 83 <a class="navbar-brand my-0 font-weight-normal logo" href="/"></a> 84 <ul class="navbar-nav"> 85 <li class="nav-item"> 86 <a class="menu" href="https://www.toponad.net/en"> 87 Home 88 </a> 89 </li> 90 91 92 <li class="nav-item"> 93 <a class="menu" href="https://www.toponad.net/en/monetization"> 94 MONETIZATION 95 </a> 96 </li> 97 <li class="nav-item"> 98 <a class="menu" href="https://www.toponad.net/en/mediation"> 99 MEDIATION 100 </a> 101 </li> 102 <li class="nav-item"> 103 <a class="menu" href="https://www.toponad.net/en/statistics"> 104 STATISTICS 105 </a> 106 </li> 107 108 109 <li class="nav-item"> 110 <a class="menu" href="https://www.toponad.net/en/posts"> 111 BLOG 112 <div class="menu--active__underline"></div> 113 </a> 114 </li> 115 <li class="nav-item"> 116 <a class="menu scroll-to--about-topon" href="javascript:void(0)"> 117 CONTACT US 118 </a> 119 </li> 120 121 <li class="nav-item"> 122 <a class="menu" href="https://www.toponad.net/en/jobs"> 123 Join Us 124 </a> 125 </li> 126 </ul> 127 128 <ul class="navbar-nav ml-auto"> 129 <li class="nav-item"> 130 <a class="menu" target="_blank" href="https://portal.toponad.net/m/login"> 131 Login 132 </a> 133 </li> 134 <li class="nav-item d-flex align-items-center"> 135 <a class="menu menu--register transition3" target="_blank" href="https://portal.toponad.net/m/register"> 136 Sign up 137 </a> 138 </li> 139 140 </ul> 141 </nav> 142 </div> 143 <!-- Notice --> 144 145 <div class="notice-container"> 146 <input id="notice-switch" type="checkbox" checked="checked" > 147 <div class="notice transition5">
148 <span class="notice__icon">!</span> 149 <p class="notice__content">Reportï½TopOn GLOBAL MOBILE GAMES ADVERTISING MONETIZATION REPORT_H1 2026</p> 150 <a class="notice__link" href="https://www.toponad.net/en/report/300000291.html">Read>></a> 151 <div class="notice__filler"></div> 152 <label class="notice__close" for="notice-switch" onclick="onNoticeClose()"></label> 153 </div> 154 </div> 155 156
156<script> 157 function onNoticeClose() { 158 window.location.href="https://www.toponad.net/en/notice-close"; 159 } 160 </script>
160 161 162 </header> 163 <div class="modal fade" id="loadingModal" tabindex="-1" role="dialog" aria-hidden="true"> 164 <div class="modal-dialog modal-dialog-centered" role="document"> 165 <div class="modal-content"> 166 <div class="modal-body"> 167 <div class="text-center"> 168 <div class="spinner-border text-primary" role="status"> 169 <span class="sr-only"></span> 170 </div> 171 </div> 172 </div> 173 </div> 174 </div> 175 </div> 176 177
177<script> 178 function hideLoading () { 179 $('#loadingModal').modal('hide'); 180 $('#loadingModal').hide().removeClass('show'); 181 $('.modal-backdrop').remove(); 182 $('body').removeClass('modal-open'); 183 } 184 </script>
184 <div class="page-body"> 185 <div class="blog-container"> 186 <div class="blog"> 187 <input class="blog__tab" id="tab-0" type="radio" name="tab-group" value="0" checked="checked" /> 188 <label class="blog__label text-unselectable" for="tab-0" style="width: 25%">NEWS</label> 189 <input class="blog__tab" id="tab-1" type="radio" name="tab-group" value="1" /> 190 <label class="blog__label text-unselectable" for="tab-1" style="width: 25%">MARKET</label> 191 <input class="blog__tab" id="tab-2" type="radio" name="tab-group" value="2" /> 192 <label class="blog__label text-unselectable" for="tab-2" style="width: 25%">APP MONETIZATION</label> 193 <input class="blog__tab" id="tab-3" type="radio" name="tab-group" value="3" /> 194 <label class="blog__label text-unselectable" for="tab-3" style="width: 25%">INSIGHT</label> 195 <div class="blog__content"> 196 <div class="blog__content__div blog__content__div-0"> 197 <div class="blog__content__item__wrapper"> 198 <div class="blog__content__item"> 199 <div class="blog__content__item__img" style="background-image:url('https://new-img-tpn.toponad.com/posts/2026/08/05/b135805fb90a355e4348143d3808465b.png');"></div> 200 <div class="blog__content__item__content"> 201 <a class="blog__content__item__content__title" href="https://www.toponad.net/en/posts/300000290.html"> 202 Yandex Ads x TopOn: Driving 166% revenue growth through global demand expansion 203 </a> 204 <p class="blog__content__item__content__excerpt"> 205 Yandex Ads and TopOn are expanding their collaboration, connecting advertisers and publishers across global mobile markets tounlock greater monetization potential through broader advertiser reach and ongoing performance optimization.About the partnershipTopOn isaglobal mobile mediation platform that... 206 </p> 207 <div class="blog__content__item__content__spread"></div> 208 <div class="blog__content__item__content__info"> 209 <span>2026-08-05</span> 210 </div> 211 </div> 212 </div> 213 <div class="blog__content__item"> 214 <div class="blog__content__item__img" style="background-image:url('https://new-img-tpn.toponad.com/posts/2026/07/23/8a9345764301973d8995b7d3c74e7fba.jpg');"></div> 215 <div class="blog__content__item__content"> 216 <a class="blog__content__item__content__title" href="https://www.toponad.net/en/posts/300000289.html"> 217 TopOn partners with Display.io SDK, Unlocking Incremental Revenue for Mobile App Publishers 218 </a> 219 <p class="blog__content__item__content__excerpt"> 220 TopOn is thrilled to announce integration with Display.io, enabling publishers worldwide to access Display.io&rsquo;s exclusive brand demand through the Display.ioSDK.Expanding Monetization Through Exclusive Demand and Signal-Enriched SupplyFounded in 2017, Display.io is a global in-app supply-side... 221 </p> 222 <div class="blog__content__item__content__spread"></div> 223 <div class="blog__content__item__content__info"> 224 <sp
224an>2026-07-23</span> 225 </div> 226 </div> 227 </div> 228 <div class="blog__content__item"> 229 <div class="blog__content__item__img" style="background-image:url('https://new-img.toponad.com/posts/2026/06/26/67d6e5948b3d5764bfbd6e06c6b44505.jpg');"></div> 230 <div class="blog__content__item__content"> 231 <a class="blog__content__item__content__title" href="https://www.toponad.net/en/posts/477.html"> 232 Start.io x TopOn | Scaling Mobile App Revenue Through Full-Stack Integration 233 </a> 234 <p class="blog__content__item__content__excerpt"> 235 236 </p> 237 <div class="blog__content__item__content__spread"></div> 238 <div class="blog__content__item__content__info"> 239 <span>2026-06-26</span> 240 </div> 241 </div> 242 </div> 243 <div class="blog__content__item"> 244 <div class="blog__content__item__img" style="background-image:url('https://new-img-tpn.toponad.com/posts/2026/06/17/f1b6ac67e77da05f851ed98b17cae08c.png');"></div> 245 <div class="blog__content__item__content"> 246 <a class="blog__content__item__content__title" href="https://www.toponad.net/en/posts/300000283.html"> 247 Unity Ads bidding now available in TopOn Mediation 248 </a> 249 <p class="blog__content__item__content__excerpt"> 250 June 2026 &mdash;&mdash; TopOn, a leading global mobile ad mediation platform, officially announced that the Unity Ads SDK has been successfully integrated into TopOn In-App Bidding solution.Through this deep technical integration, developers and publishers using TopOn mediation platform will gain d... 251 </p> 252 <div class="blog__content__item__content__spread"></div> 253 <div class="blog__content__item__content__info"> 254 <span>2026-06-17</span> 255 </div> 256 </div> 257 </div> 258 <div class="blog__content__item"> 259 <div class="blog__content__item__img" style="background-image:url('https://new-img-tpn.toponad.com/posts/2026/06/01/ac6286ecf5dbacb2fe28602441d52ca0.png');"></div> 260 <div class="blog__content__item__content"> 261 <a class="blog__content__item__content__title" href="https://www.toponad.net/en/posts/300000282.html"> 262 TopOn Officially Integrates Moloco SDK to Enhance Global Monetization 263 </a> 264 <p class="blog__content__item__content__excerpt"> 265 We are thrilled to announce that Moloco is now an official In-App Bidding partner on the TopOn Mediation. This strategic integration allows publishers to tap into premium, high-quality demand from Moloco&rsquo;s global network, helping drive significant revenue growth through high-performance ad for... 266 </p> 267 <div class="blog__content__item__content__spread"></div> 268 <div class="blog__content__item__content__info"> 269 <sp
269an>2026-06-01</span> 270 </div> 271 </div> 272 </div> 273 </div> 274 <div class="blog__content__btn transition5 text-unselectable" onclick="loadMore(this, 'News')">Get more</div> 275 </div> 276 <div class="blog__content__div blog__content__div-1"> 277 <div class="blog__content__item__wrapper"> 278 <div class="blog__content__item"> 279 <div class="blog__content__item__img" style="background-image:url('https://img.toponad.com/posts/2026/01/22/9c2783ee3368ebdbaff25529084671cf.png');"></div> 280 <div class="blog__content__item__content"> 281 <a class="blog__content__item__content__title" href="https://www.toponad.net/en/posts/448.html"> 282 Navigating the Toughest Privacy Regulations: A Guide for Developers (Part II) | GDPR & DMA Unpacked 283 </a> 284 <p class="blog__content__item__content__excerpt"> 285 You've likely been frequently notified by giants like Google and Facebook about GDPR regulationsand theDMA Act&mdash;but what exactly are these, and why are leading global digital networks issuing such serious announcements? How are they connected to the products and services in our industry?This ar... 286 </p> 287 <div class="blog__content__item__content__spread"></div> 288 <div class="blog__content__item__content__info"> 289 <a href="https://www.toponad.net/en/posts/tags/globalmarket">globalmarket</a> 290 <span>2026-01-22</span> 291 </div> 292 </div> 293 </div> 294 </div> 295 </div> 296 <div class="blog__content__div blog__content__div-2"> 297 <div class="blog__content__item__wrapper"> 298 <div class="blog__content__item"> 299 <div class="blog__content__item__img" style="background-image:url('https://img.toponad.com/posts/2025/12/19/c14b9a0f0282eac3a5b5af44cd64a8be.png');"></div> 300 <div class="blog__content__item__content"> 301 <a class="blog__content__item__content__title" href="https://www.toponad.net/en/posts/439.html"> 302 Is App Commercialization Becoming More Difficult? You Need to Choose the Right Ad Network 303 </a> 304 <p class="blog__content__item__content__excerpt"> 305 In the previous article, we analyzed the core elements of an app monetization platform from four dimensions: App Type Compatibility, Ad format diversity, Integration efficiency and smart ad serving mechanisms. (Click to jump to view details) ( As an App Developer, How to Choose the Most Suitable Ad... 306 </p> 307 <div class="blog__content__item__content__spread"></div> 308 <div class="blog__content__item__content__info"> 309 <a href="https://www.toponad.net/en/posts/tags/monetization">monetization</a> 310 <sp
310an>2025-12-19</span> 311 </div> 312 </div> 313 </div> 314 <div class="blog__content__item"> 315 <div class="blog__content__item__img" style="background-image:url('https://img.toponad.com/posts/2025/12/12/9a477766832256a75ff58673fab0fd14.jpg');"></div> 316 <div class="blog__content__item__content"> 317 <a class="blog__content__item__content__title" href="https://www.toponad.net/en/posts/433.html"> 318 As an App Developer, How to Choose the Most Suitable Ad Network? 319 </a> 320 <p class="blog__content__item__content__excerpt"> 321 With the rapid development of the mobile internet,advertising has become the mainstream method for app monetization. According to statistics, approximately63% of global app developers generate revenue from ads.If you have decided tomonetize your app through advertising, facing numerous ad networks w... 322 </p> 323 <div class="blog__content__item__content__spread"></div> 324 <div class="blog__content__item__content__info"> 325 <a href="https://www.toponad.net/en/posts/tags/monetization">monetization</a> 326 <span>2025-12-12</span> 327 </div> 328 </div> 329 </div> 330 </div> 331 </div> 332 <div class="blog__content__div blog__content__div-3"> 333 <div class="blog__content__item__wrapper"> 334 </div> 335 </div> 336 </div> 337 </div> 338 <div class="sidebar"> 339 <h2 class="box-7__title">Popular</h2> 340 <a class="sidebar__hot-news__item" href="https://www.toponad.net/en/posts/408.html"> 341 <div class="sidebar__hot-news__item__rank--top text-unselectable">1</div> 342 <div> 343 <p class="sidebar__hot-news__item__title transition3">PremiumAds is now an Official Mediation Partner of TopOn</p> 344 <p class="sidebar__hot-news__item__date"> 345 2025.9.29 346 </p> 347 </div> 348 </a> 349 <a class="sidebar__hot-news__item" href="https://www.toponad.net/en/posts/433.html"> 350 <div class="sidebar__hot-news__item__rank--top text-unselectable">2</div> 351 <div> 352 <p class="sidebar__hot-news__item__title transition3">As an App Developer, How to Choose the Most Suitable Ad Network?</p> 353 <p class="sidebar__hot-news__item__date"> 354 2025.12.12 355 </p> 356 </div> 357 </a> 358 <a class="sidebar__hot-news__item" href="https://www.toponad.net/en/posts/406.html"> 359 <div class="sidebar__hot-news__item__rank--top text-unselectable">3</div> 360 <div> 361 <p class="sidebar__hot-news__item__title transition3">TopOn Partners with Micro Drama to Achieve Over 50% Growth in Both eCPM and ARPU</p> 362 <p class="sidebar__hot-news__item__date"> 363 2025.8.22 364 </p> 365 </div> 366 </a> 367 <a class="sidebar__hot-news__item" href="https://www.toponad.net/en/posts/412.html"> 368 <div class="sidebar__hot-news__item__rank text-unselectable">4</div> 369 <div> 370 <p class="sidebar__hot-news__item__title transition3">TopOn à Tencent Cloud: Building a Cloud Accelerator to Forge a New Engine for Ad Monetization</p> 371 <p class="sidebar__hot-news__item__date"> 372 2025.10.20 373 </p> 374 </div> 375 </a> 376 <a class="sidebar__hot-news__item" href="https://www.toponad.net/en/posts/448.html"> 377 <div class="sidebar__hot-news__item__rank text-unselectable">5</div> 378 <div> 379 <p class="sidebar__hot-news__item__title transition3">Navigating the Toughest Privacy Regulations: A Guide for Developers (Part II) | GDPR & DMA Unpacked</p> 380 <p class="sidebar__hot-news__item__date"> 381 2026.1.22 382 </p> 383 </div> 384 </a> 385 <a class="sidebar__hot-news__item" href="https://www.toponad.net/en/posts/419.html"> 386 <div class="sidebar__hot-news__item__rank text-unselectable">6</div> 387 <div> 388 <p class="sidebar__hot-news__item__title transition3">TopOn à GeoEdge: Form Strategic Partnership to Build a New Ecosystem for Mobile Ad Data Security!</p> 389 <p class="sidebar__hot-news__item__date"> 390 2025.10.29 391 </p> 392 </div> 393 </a> 394 <a class="sidebar__hot-news__item" href="https://www.toponad.net/en/posts/439.html"> 395 <div class="sidebar__hot-news__item__rank text-unselectable">7</div> 396 <div> 397 <p class="sidebar__hot-news__item__title transition3">Is App Commercialization Becoming More Difficult? You Need to Choose the Right Ad Network</p> 398 <p class="sidebar__hot-news__item__date"> 399 2025.12.19 400 </p> 401 </div> 402 </a> 403 <a class="sidebar__hot-news__item" href="https://www.toponad.net/en/posts/421.html"> 404 <div class="sidebar__hot-news__item__rank text-unselectable">8</div> 405 <div> 406 <p class="sidebar__hot-news__item__title transition3">TopOnâs Shared Ad Placement Feature: Maximize Revenue from Every Ad Impression</p> 407 <p class="sidebar__hot-news__item__date"> 408 2025.11.13 409 </p> 410 </div> 411 </a> 412 <a class="sidebar__hot-news__item" href="https://www.toponad.net/en/posts/312.html"> 413 <div class="sidebar__hot-news__item__rank text-unselectable">9</div> 414 <div> 415 <p class="sidebar__hot-news__item__title transition3">Product Information | TopOn officially integrates Columbus, an advertising network of Xiaomi International Internet Business, and becomes bidding partner</p> 416 <p class="sidebar__hot-news__item__date"> 417 2024.8.29 418 </p> 419 </div> 420 </a> 421 <a class="sidebar__hot-news__item" href="https://www.toponad.net/en/posts/383.html"> 422 <div class="sidebar__hot-news__item__rank text-unselectable">10</div> 423 <div> 424 <p class="sidebar__hot-news__item__title transition3">Why Turkey Should Be Your Next Gaming Marketï¼</p> 425 <p class="sidebar__hot-news__item__date"> 426 2025.7.1 427 </p> 428 </div> 429 </a> 430 </div> </div> 431 </div> 432<footer id="footer"> 433 <div class="footer-main"> 434 <div class="footer-main__graphics" style="margin: 0px;"> 435 <a class="logo"></a> 436 <a class="footer-main__graphics__btn transition3" href="https://www.toponad.net/en/contact">MESSAGE</a> 437 <div class="footer-main__graphics__icons"> 438 <a class="footer-main__graphics__icons--facebook transition3" target="_blank" title="facebook" href="https://www.facebook.com/To
438pOn-2202518406639775/?ref=bookmarks"></a> 439 440 <a class="footer-main__graphics__icons--linkedin transition3" target="_blank" title="linkedin" href="https://www.linkedin.com/company/14823889/admin/"></a> 441 442 <a class="footer-main__graphics__icons--facebook--loader" hidden></a> 443 444 <a class="footer-main__graphics__icons--linkedin--loader" hidden></a> 445 </div> 446 </div> 447 <div class="footer-main__split-line"></div> 448 <div class="footer-main__about"> 449 <h2 id="about-topon">About TopOn</h2> 450 <a class="footer-main__about__item" href="https://www.toponad.net/en/monetization">MONETIZATION</a> 451 <a class="footer-main__about__item" href="https://www.toponad.net/en/mediation">MEDIATION</a> 452 <a class="footer-main__about__item" href="https://www.toponad.net/en/statistics">STATISTICS</a> 453 <a class="footer-main__about__item" href="https://www.toponad.net/en/posts">BLOG</a> 454 </div> 455 <div class="footer-main__about footer-main__contact"> 456 <h2>Contact Information</h2> 457 <div class="footer-main__about__item"> 458 <span>Address</span> 459 <a 460 class="footer-main__about__item__addr" 461 href="javascript:void(0)" 462 style="max-width: 700px;" 463 > 464 8 THE GREEN STE A DOVER, Delaware 19901, United States 465 </a> 466 </div> 467 <div class="footer-main__about__item"> 468 <span>Business Cooperation</span> 469 <a href="mailto:[email protected]" target="_blank">[email protected]</a> 470 </div> 471 <div class="footer-main__about__item"> 472 <span>Marketing Cooperation</span> 473 <a href="mailto:[email protected]" target="_blank">[email protected]</a> 474 </div> 475 <div class="footer-main__about__item"> 476 <span>Technical Support</span> 477 <a href="mailto:[email protected]" target="_blank">[email protected]</a> 478 </div> 479 </div> 480 </div> 481 <div class="footer-split-line"></div> 482 <div class="footer-copy-right" style="margin-top: 0px"> 483 <a href="https://www.toponad.net/en/privacy-policy">Privacy Policy</a> 484 | 485 <a href="https://www.toponad.net/en/terms">Terms</a> 486 | 487 <a href="javascript:void(0)" onclick="onShowDialog()">Cookie Management</a> 488 | 489 <a href="https://www.toponad.net/en/do-not-sell-or-share-my-data">Do not sell or share my data</a> 490 </div> 491</footer> 492<div class="cookie-wrapper"> 493 <div class="cookie-content container"> 494 <div class="text"> 495 By clicking "Agree", you consent to our use of tracking tools to record your browsing behavior and analyze your interaction with our website. For more details, please check "Custom Settings". 496 </div> 497 498 <div class="action"> 499 <div class="button button--default button--large" onclick="onCookieAgree()">Agree</div> 500 <div class="button button--default button--large" onclick="onShowDialog()">Custom</div> 501 <div class="dialog__close white" onclick="onCookieDisagree()"></div> 502 </div> 503 </div> 504</div> 505<div class="dialog-wrapper cookie-dialog"> 506 <div class="dialog cookie-settings-dialog"> 507 <div class="dialog-header cookie-settings-header"> 508 <div class="cookie-settings-header__main"> 509 <div class="cookie-settings-title">Custom Cookie Settings</div> 510 <div class="dialog__close" onclick="onCloseDialog()"></div> 511 </div> 512 <div class="cookie-settings-intro">We use cookies to ensure the website functions properly and, with your consent, for data analysis and experience optimization.</div> 513 </div>
514 <div class="dialog-body cookie-settings-body"> 515 <div class="cookie-settings-alert"> 516 <span class="cookie-settings-alert__icon" aria-hidden="true"> 517 <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 518 <circle cx="8" cy="8" r="7" fill="#2678FF"/> 519 <path d="M8.5 6.5V11.5H7.5V6.5H8.5ZM8 4.25C8.41421 4.25 8.75 4.58579 8.75 5C8.75 5.41421 8.41421 5.75 8 5.75C7.58579 5.75 7.25 5.41421 7.25 5C7.25 4.58579 7.58579 4.25 8 4.25Z" fill="white"/> 520 </svg> 521 </span> 522 <span class="cookie-settings-alert__text">Disabling certain types of cookies may affect your experience on this website and limit the functionality of some services.</span> 523 </div> 524 525 <div class="cookie-settings-sections"> 526 <div class="cookie-settings-card"> 527 <div class="cookie-settings-card__content"> 528 <div class="cookie-settings-card__title">Essential Cookies</div> 529 <div class="cookie-settings-card__desc">Used for basic functions such as login status, language preferences, and security verification. These cannot be disabled through cookie preference settings.</div> 530 </div> 531 <div class="switch is-checked is-disabled" id="switch-essential" title="Essential Cookies"> 532 <span class="switch__core"></span> 533 </div> 534 </div> 535
536 <div class="cookie-settings-card cookie-settings-card--stack"> 537 <div class="cookie-settings-card__content"> 538 <div class="cookie-settings-card__title">Analytics Cookies</div> 539 <div class="cookie-settings-card__desc">Help us understand page visits and feature usage to optimize your experience.</div> 540 </div> 541 <div class="cookie-settings-tool"> 542 <div class="cookie-settings-tool__label"> 543 <span>Google Analytics</span> 544 <span class="cookie-settings-help" tabindex="0" aria-label="Google Analytics"> 545 <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 546 <g transform="translate(2 2)"> 547 <path d="M6.00089 8.35864C6.37822 8.35866 6.68388 8.66448 6.68403 9.04178C6.68403 9.4192 6.3783 9.7257 6.00089 9.72572C5.62346 9.72572 5.31775 9.41921 5.31775 9.04178C5.31789 8.66447 5.62355 8.35864 6.00089 8.35864Z" fill="#BABCBF"/> 548 <path d="M6.00089 2.35775C7.20106 2.35775 8.17433 3.33115 8.17444 4.5313C8.17444 5.5472 7.47619 6.39709 6.53427 6.63517V7.26466C6.53427 7.55905 6.29529 7.79803 6.00089 7.79803C5.70649 7.79803 5.46751 7.55905 5.46751 7.26466V6.17147C5.46762 5.87717 5.70656 5.6381 6.00089 5.6381C6.61233 5.6381 7.10769 5.14274 7.10769 4.5313C7.10758 3.91995 6.61226 3.4245 6.00089 3.4245C5.38951 3.4245 4.8942 3.91995 4.89409 4.5313C4.89409 4.8257 4.65511 5.06468 4.36072 5.06468C4.06632 5.06468 3.82734 4.8257 3.82734 4.5313C3.82745 3.33115 4.80072 2.35775 6.00089 2.35775Z" fill="#BABCBF"/> 549 <path fill-rule="evenodd" clip-rule="evenodd" d="M6.00089 0C7.65737 7.22784e-05 9.1579 0.672927 10.2431 1.7579C11.3283 2.84313 12.0009 4.34419 12.001 6.00089C12.0009 7.65756 11.3283 9.15788 10.2431 10.2431C9.15788 11.3282 7.65754 12.0009 6.00089 12.001C4.34423 12.0009 2.8431 11.3283 1.7579 10.2431C0.672927 9.1579 7.22782e-05 7.65737 0 6.00089C5.41859e-05 4.34422 0.672723 2.84312 1.7579 1.7579C2.8431 0.67271
5495 4.34423 8.12796e-05 6.00089 0ZM6.00089 1.06675C4.63834 1.06683 3.40496 1.61809 2.51152 2.51152C1.61809 3.40498 1.06681 4.63832 1.06675 6.00089C1.06683 7.36326 1.6183 8.59605 2.51152 9.48946C3.40496 10.3829 4.63834 10.9349 6.00089 10.935C7.36343 10.935 8.59602 10.3829 9.48946 9.48946C10.3829 8.59602 10.935 7.36345 10.935 6.00089C10.935 4.6383 10.3829 3.40499 9.48946 2.51152C8.59605 1.6183 7.36326 1.06683 6.00089 1.06675Z" fill="#BABCBF"/> 550 </g> 551 </svg> 552 <span class="cookie-settings-tooltip">If you would like to learn more about the features and operation of Google Analytics, please visit: <a href="https://marketingplatform.google.com/about/analytics/" target="_blank" rel="noopener">https://marketingplatform.google.com/about/analytics/</a>. For more information on how Google Analytics is used and how it collects and processes data, please refer to the Analytics Policies at: <a href="https://support.google.com/analytics/answer/4597324" target="_blank" rel="noopener">https://support.google.com/analytics/answer/4597324</a>.</span> 553 </span> 554 </div> 555 <div class="switch" id="switch-analytics" onclick="onChangeSwitch('switch-analytics')"> 556 <span class="switch__core"></span> 557 </div> 558 </div> 559 </div> 560 </div> 561 </div> 562 <div class="dialog-footer cookie-settings-footer"> 563 <a class="cookie-settings-policy" href="/en/cookie-policy" target="_blank" rel="noopener"> 564 <span>Cookie Policy</span> 565 <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 566 <path d="M6.5 3.5H12.5V9.5M12.2 3.8L4 12" stroke="#2678FF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/> 567 </svg> 568 </a> 569 <div class="cookie-settings-actions"> 570 <div class="button button--primary" onclick="onRejectAll()">Reject All</div> 571 <div class="button button--primary" onclick="onAcceptAll()">Accept All</div> 572 <div class="button button--primary" onclick="onSaveSettings()">Save Settings</div> 573 </div> 574 </div> 575 </div> 576</div> 577<div class="v-modal cookie-dialog"></div>
578<script> 579 const COOKIE_CONSENT_CONFIG = { 580 policyVersion: '2026-07-16', 581 bannerVersion: 'v1', 582 csrfToken: 'NKveDjHXSqPBcAQBP8V0pBuqOFjWZycfOPo1ZiT3', 583 }; 584 585 function setLocalStorage (k, v, type = 'obj') { 586 window.localStorage.setItem(k, type === 'raw' ? v : JSON.stringify(v)); 587 }; 588 function getLocalStorage (k, type = 'obj') { 589 const v = window.localStorage.getItem(k); 590 return v ? type === 'raw' ? v : JSON.parse(v) : ''; 591 }; 592 593 function buildConsentPayload(consentAction, analyticsChecked) { 594 const choose = analyticsChecked ? 1 : 0; 595 return { 596 consent_action: consentAction, 597 policy_version: COOKIE_CONSENT_CONFIG.policyVersion, 598 banner_version: COOKIE_CONSENT_CONFIG.bannerVersion, 599 baidu_choose: 0, 600 google_choose: choose, 601 }; 602 } 603 604 function submitCookieConsent(consentAction, analyticsChecked) { 605 return fetch('/cookie-consent', { 606 method: 'POST', 607 headers: { 608 'Content-Type': 'application/json', 609 'Accept': 'application/json', 610 'X-CSRF-TOKEN': COOKIE_CONSENT_CONFIG.csrfToken, 611 'X-Requested-With': 'XMLHttpRequest', 612 }, 613 credentials: 'same-origin', 614 body: JSON.stringify(buildConsentPayload(consentAction, analyticsChecked)), 615 }).catch(function () { 616 return null; 617 }); 618 } 619 620 const cookiePolicy = getLocalStorage('_cookie_policy'); 621 if(!cookiePolicy){ 622 document.querySelector('.cookie-wrapper').style.display = 'flex'; 623 }else{ 624 const { agree, expires } = cookiePolicy; 625 if(!agree && expires < new Date().getTime()){ 626 document.querySelector('.cookie-wrapper').style.display = 'flex'; 627 } 628 } 629 630 function setAnalyticsSwitch(checked) { 631 const switchNode = document.querySelector('#switch-analytics'); 632 if (!switchNode) return; 633 if (checked) { 634 switchNode.classList.add('is-checked'); 635 } else { 636 switchNode.classList.remove('is-checked'); 637 } 638 } 639 640 function isAnalyticsChecked() { 641 const switchNode = document.querySelector('#switch-analytics'); 642 return !!(switchNode && switchNode.classList.contains('is-checked')); 643 } 644 645 function syncDialogFromPolicy() { 646 const policy = getLocalStorage('_cookie_policy'); 647 setAnalyticsSwitch(!!(policy && policy.agree)); 648 } 649 650 function saveCookiePolicyLocal(agree) { 651 if (agree) { 652 setLocalStorage('_cookie_policy', { agree: true }); 653 } else { 654 const expires = new Date().getTime() + (30 * 24 * 60 * 60 * 1000); 655 setLocalStorage('_cookie_policy', { agree: false, expires: expires }); 656 } 657 document.querySelector('.cookie-wrapper').style.display = 'none'; 658 } 659 660 function onCookieAgree() { 661 submitCookieConsent(1, true); 662 saveCookiePolicyLocal(true); 663 } 664 665 function onCookieDisagree(consentAction) { 666 submitCookieConsent(consentAction || 2, false); 667 saveCookiePolicyLocal(false); 668 } 669 670 function onShowDialog() { 671 syncDialogFromPolicy(); 672 document.querySelectorAll('.cookie-dialog').forEach(node => { 673 node.style.display = 'flex'; 674 }) 675 } 676 677 function onCloseDialog() { 678 document.querySelectorAll('.cookie-dialog').forEach(node => { 679 node.style.display = 'none'; 680 }) 681 } 682 683 function onChangeSwitch(id) { 684 const switchNode = document.querySelector(`#${id}`); 685 if (!switchNode || switchNode.classList.contains('is-disabled')) { 686 return; 687 } 688 switchNode.classList.toggle('is-checked'); 689 } 690 691 function onRejectAll() { 692 setAnalyticsSwitch(false); 693 submitCookieConsent(2, false); 694 saveCookiePolicyLocal(false); 695 onCloseDialog(); 696 } 697 698 function onAcceptAll() { 699 setAnalyticsSwitch(true); 700 submitCookieConsent(3, true); 701 saveCookiePolicyLocal(true); 702 onCloseDialog(); 703 } 704 705 function onSaveSettings() { 706 const analyticsChecked = isAnalyticsChecked(); 707 submitCookieConsent(4, analyticsChecked); 708 saveCookiePolicyLocal(analyticsChecked); 709 onCloseDialog(); 710 } 711 712 (function bindAnalyticsHelp() {
713 const help = document.querySelector('.cookie-settings-help'); 714 if (!help) return; 715 const tooltip = help.querySelector('.cookie-settings-tooltip'); 716 help.addEventListener('click', function (e) { 717 e.stopPropagation(); 718 help.classList.toggle('is-open'); 719 }); 720 if (tooltip) { 721 tooltip.addEventListener('click', function (e) { 722 e.stopPropagation(); 723 }); 724 } 725 document.addEventListener('click', function () { 726 help.classList.remove('is-open'); 727 }); 728 })(); 729 730</script>
730 731<style> 732 .cookie-wrapper { 733 display: none; 734 background: #3E66EB; 735 position: sticky; 736 width: 100%; 737 bottom: 0; 738 color: white; 739 padding: 12px 0; 740 z-index: 100; 741 } 742 .cookie-wrapper .cookie-content { 743 display: flex; 744 justify-content: space-between; 745 align-items: center; 746 gap: 24px; 747 } 748 .cookie-wrapper .text{ 749 font-size: 14px; 750 font-style: normal; 751 font-weight: 400; 752 line-height: 20px; 753 } 754 .cookie-wrapper .action{ 755 display: flex; 756 align-items: center; 757 gap: 8px; 758 } 759 .cookie-wrapper .action .dialog__close{ 760 margin-left: 24px; 761 } 762 763 .button{ 764 display: flex; 765 justify-content: center; 766 align-items: center; 767 min-width: 96px; 768 padding: 8px 16px; 769 border-radius: 4px; 770 cursor: pointer; 771 font-size: 14px; 772 font-weight: 400; 773 line-height: 20px; 774 box-sizing: border-box; 775 } 776 .button--large{ 777 font-size: 16px; 778 line-height: 24px; 779 } 780 .button--default{ 781 border: 1px solid #E3E6EB; 782 background: white; 783 color: #3e66eb; 784 } 785 .button--plain{ 786 border: 1px solid #FFF; 787 color: white; 788 } 789 .button--primary{ 790 background-color: #2678FF; 791 color: white; 792 border: none; 793 font-size: 12px; 794 line-height: 16px; 795 } 796 797 .v-modal { 798 display: none; 799 position: fixed; 800 left: 0; 801 top: 0; 802 width: 100%; 803 height: 100%; 804 opacity: 0.5; 805 background: #000000; 806 z-index: 1000001; 807 } 808 .dialog-wrapper{ 809 display: none; 810 position: fixed; 811 top: 0; 812 right: 0; 813 bottom: 0; 814 left: 0; 815 overflow: auto; 816 margin: 0; 817 z-index: 1000002; 818 flex-direction: column; 819 align-items: center; 820 justify-content: center; 821 }
822 .dialog-wrapper .dialog.cookie-settings-dialog{ 823 width: 600px; 824 max-width: calc(100vw - 32px); 825 border-radius: 8px; 826 background: #FFF; 827 color: #1f2126; 828 font-size: 12px; 829 line-height: 16px; 830 box-sizing: border-box; 831 padding: 24px 0 0; 832 } 833 .cookie-settings-header{ 834 position: relative; 835 padding: 0 24px 16px; 836 margin-bottom: 0; 837 border-bottom: none; 838 } 839 .cookie-settings-header::after{ 840 content: ""; 841 position: absolute; 842 left: 24px; 843 right: 24px; 844 bottom: 0; 845 height: 1px; 846 background: #EBEEF2; 847 } 848 .cookie-settings-header__main{ 849 display: flex; 850 justify-content: space-between; 851 align-items: flex-start; 852 width: 100%; 853 gap: 12px; 854 } 855 .cookie-settings-header .dialog__close{ 856 width: 32px; 857 height: 32px; 858 margin: -8px -8px 0 0; 859 border-radius: 4px; 860 background-color: transparent; 861 background-image: url(/svg/close.svg); 862 background-repeat: no-repeat; 863 background-position: center; 864 background-size: 16px 16px; 865 flex-shrink: 0; 866 }
867 .cookie-settings-header .dialog__close:hover{ 868 background-color: #F4F4F4; 869 } 870 .cookie-settings-title{ 871 font-size: 16px; 872 font-weight: 600; 873 line-height: 24px; 874 color: #1F2126; 875 } 876 .cookie-settings-intro{ 877 margin-top: 4px; 878 font-size: 12px; 879 font-weight: 400; 880 line-height: 16px; 881 color: #8B94A3; 882 } 883 .cookie-settings-body{ 884 padding: 16px 24px 0; 885 } 886 .cookie-settings-alert{ 887 display: flex; 888 align-items: flex-start; 889 gap: 6px; 890 padding: 6px 12px; 891 border-radius: 4px; 892 background: #ECF2FC; 893 margin-bottom: 8px; 894 } 895 .cookie-settings-alert__icon{ 896 flex-shrink: 0; 897 width: 16px; 898 height: 16px; 899 margin-top: 0; 900 display: inline-flex; 901 } 902 .cookie-settings-alert__text{ 903 flex: 1; 904 font-size: 12px; 905 line-height: 16px; 906 color: #1F2126; 907 } 908 .cookie-settings-sections{ 909 display: flex; 910 flex-direction: column; 911 gap: 8px; 912 } 913 .cookie-settings-card{ 914 display: flex; 915 align-items: center; 916 gap: 24px; 917 padding: 12px; 918 border: 1px solid #E3E6EB; 919 border-radius: 4px; 920 background: #FFF; 921 box-sizing: border-box; 922 }
923 .cookie-settings-card--stack{ 924 flex-direction: column; 925 align-items: stretch; 926 gap: 16px; 927 } 928 .cookie-settings-card__content{ 929 flex: 1; 930 min-width: 0; 931 display: flex; 932 flex-direction: column; 933 gap: 4px; 934 } 935 .cookie-settings-card__title{ 936 font-size: 12px; 937 font-weight: 600; 938 line-height: 16px; 939 color: #1F2126; 940 } 941 .cookie-settings-card__desc{ 942 font-size: 12px; 943 font-weight: 400; 944 line-height: 16px; 945 color: #8B94A3; 946 } 947 .cookie-settings-tool{ 948 display: flex; 949 align-items: center; 950 justify-content: space-between; 951 gap: 16px; 952 padding: 12px; 953 border-radius: 4px; 954 background: #F4F4F4; 955 } 956 .cookie-settings-tool__label{ 957 display: flex; 958 align-items: center; 959 gap: 2px; 960 min-width: 0; 961 font-size: 12px; 962 font-weight: 600; 963 line-height: 16px; 964 color: #1F2126; 965 } 966 .cookie-settings-help{ 967 position: relative; 968 display: inline-flex; 969 align-items: center; 970 cursor: pointer; 971 flex-shrink: 0; 972 } 973 .cookie-settings-tooltip{ 974 display: none; 975 position: absolute; 976 left: 50%; 977 bottom: calc(100% + 4px); 978 transform: translateX(-50%); 979 width: max-content; 980 max-width: min(300px, calc(100vw - 64px)); 981 padding: 10px 12px; 982 border-radius: 4px; 983 background: #1F2126; 984 color: #FFF; 985 font-size: 12px; 986 font-weight: 400; 987 line-height: 16px; 988 z-index: 10; 989 word-break: break-word; 990 }
991 .cookie-settings-tooltip::after{ 992 content: ""; 993 position: absolute; 994 left: 50%; 995 top: 100%; 996 transform: translateX(-50%); 997 width: 0; 998 height: 0; 999 border-style: solid; 1000 border-width: 4px 5px 0 5px; 1001 border-color: #1F2126 transparent transparent transparent; 1002 } 1003 .cookie-settings-tooltip a{ 1004 color: #2678FF; 1005 text-decoration: none; 1006 word-break: break-all; 1007 } 1008 .cookie-settings-help:hover .cookie-settings-tooltip, 1009 .cookie-settings-help:focus .cookie-settings-tooltip, 1010 .cookie-settings-help:focus-within .cookie-settings-tooltip, 1011 .cookie-settings-help.is-open .cookie-settings-tooltip{ 1012 display: block; 1013 } 1014 .cookie-settings-footer{ 1015 display: flex; 1016 justify-content: space-between; 1017 align-items: center; 1018 margin-top: 16px; 1019 padding: 16px 24px 24px; 1020 border-top: 1px solid #EBEEF2; 1021 gap: 12px; 1022 } 1023 .cookie-settings-policy{ 1024 display: inline-flex; 1025 align-items: center; 1026 gap: 2px; 1027 color: #2678FF; 1028 font-size: 12px; 1029 line-height: 16px; 1030 text-decoration: none; 1031 white-space: nowrap; 1032 }
1033 .cookie-settings-policy:hover{ 1034 opacity: 0.85; 1035 } 1036 .cookie-settings-actions{ 1037 display: flex; 1038 align-items: center; 1039 gap: 8px; 1040 flex-wrap: wrap; 1041 justify-content: flex-end; 1042 } 1043 1044 .switch{ 1045 cursor: pointer; 1046 flex-shrink: 0; 1047 } 1048 .switch.is-disabled{ 1049 cursor: not-allowed; 1050 opacity: 0.45; 1051 pointer-events: none; 1052 } 1053 .switch .switch__core { 1054 height: 16px; 1055 border-radius: 12px; 1056 border: none; 1057 width: 28px !important; 1058 display: inline-block; 1059 position: relative; 1060 background: #BABCBF; 1061 } 1062 .switch .switch__core::after { 1063 content: ""; 1064 position: absolute; 1065 border-radius: 100%; 1066 background: white; 1067 width: 12px; 1068 height: 12px; 1069 top: 50%; 1070 left: 2px; 1071 transform: translateY(-50%); 1072 transition: all 0.3s; 1073 } 1074 .switch.is-checked .switch__core { 1075 background-color: #2678FF; 1076 } 1077 .switch.is-checked .switch__core::after { 1078 left: 100%; 1079 margin-left: -14px; 1080 } 1081 1082 body.mobile .cookie-wrapper .cookie-content{ 1083 padding: 16px; 1084 } 1085 body.mobile .cookie-wrapper .cookie-content .dialog__close{ 1086 margin-left: 0px; 1087 }
1088 body.mobile .cookie-settings-footer{ 1089 flex-wrap: wrap; 1090 gap: 8px; 1091 } 1092 body.mobile .cookie-settings-actions .button{ 1093 min-width: 0; 1094 } 1095 body.mobile .cookie-settings-tooltip{ 1096 left: 0; 1097 transform: none; 1098 } 1099 body.mobile .cookie-settings-tooltip::after{ 1100 left: 12px; 1101 transform: none; 1102 } 1103</style>
1103<script src="https://www.toponad.net/js/jquery.min.js"></script>
vendor: 2 bytes, line 1103
1103
1104<script src="https://www.toponad.net/js/popper.min.js"></script>
vendor: 2 bytes, line 1104
1104
1105<script src="https://www.toponad.net/js/bootstrap.min.js"></script>
vendor: 2 bytes, line 1105
1105
1106<script src="https://www.toponad.net/js/wow.min.js"></script>
vendor: 2 bytes, line 1106
1106
1107<script src="https://www.toponad.net/js/swiper.min.js"></script>
vendor: 2 bytes, line 1107
1107
1108<script src="https://www.toponad.net/js/dayjs.min.js"></script>
vendor: 2 bytes, line 1108
1108
1109<script> 1110 $(".scroll-to--about-topon").on("click", function (event) { 1111 let obj = $('body,html'); 1112 $(obj).animate({ 1113 scrollTop: $('#about-topon').offset().top 1114 }, 1000); 1115 event.preventDefault(); 1116 }) 1117</script>
1117 1118<style> 1119</style></body>
1120<script> 1121 const parent = $('.blog__content')[0]; 1122 const btn = $(".blog__content__btn"); 1123 const btnContent = "Get more"; 1124 $(function () { 1125 /* è°è blog-content é«åº¦ï¼è§£å³ç±äºç¶ R å A å¸å±å¸¦æ¥çç¶å ç´ é«åº¦æ¶å¤±çé®é¢ */ 1126 $(parent).height($('.blog__content__div')[0].offsetHeight); 1127 $('input[name="tab-group"]').change(function () { 1128 $(parent).height($(".blog__content__div-" + getTagValue())[0].offsetHeight); 1129 }); 1130 }); 1131 1132 function loadMore(node, type) { 1133 $(".blog__content__div-" + getTagValue() + " .blog__content__btn")[0].innerText = ""; 1134 $(btn).addClass("blog__content__btn--sync"); 1135 loadMoreArticles(node, type); 1136 } 1137 1138 /** 1139 * å è½½æ´å¤æç« 1140 */ 1141 function loadMoreArticles(node, type) { 1142 setTimeout(function() { 1143 $.ajax({ 1144 url: '/posts/category/' + type, 1145 type: 'GET', 1146 data: { 1147 limit: 4, 1148 offset: getPostCount(), 1149 }, 1150 success: function (response) { 1151 $(btn).removeClass( "blog__content__btn--sync" ); 1152 $(btn).addClass("blog__content__btn--success"); 1153 setTimeout(function() { 1154 for (let i = 0; i < (response.length > 3 ? 3 : response.length); i++) { 1155 showMore(node, response[i]); 1156 $(parent).height($(".blog__content__div-" + getTagValue())[0].offsetHeight); 1157 } 1158 $(btn).removeClass("blog__content__btn--success", 230); 1159 if(response.length < 4) { 1160 $(".blog__content__div-" + getTagValue() + " .blog__content__btn").addClass("hidden"); 1161 } else { 1162 $(".blog__content__div-" + getTagValue() + " .blog__content__btn")[0].innerText = btnContent; 1163 } 1164 }, 2000); 1165 }, 1166 }); 1167 }, 1000); 1168 } 1169 1170 /** 1171 * å±ç¤ºæ´å¤æç« 1172 */ 1173 function showMore(node, article) { 1174 let tags = article.tags; 1175 let tagsHTML = ``; 1176 for (const tagsKey in tags) { 1177 if (tags.hasOwnProperty(tagsKey)) { 1178 tagsHTML += `<a href="https://www.toponad.net/en/posts/tags` + `/` + tagsKey + `">` + tags[tagsKey] + `</a>`; 1179 } 1180 } 1181 let rawHTML = ` 1182 <div class="blog__content__item"> 1183 <div class="blog__content__item__img" style="background-image:url('` + article.thumbnail + `');"></div> 1184 <div class="blog__content__item__content"> 1185 <a class="blog__content__item__content__title" href="/en/posts/` + article.id + `.html">` 1186 + article.title + ` 1187 </a> 1188 <p class="blog__content__item__content__excerpt">` 1189 + article.content.substring(0 ,300) + '...' + ` 1190 </p> 1191 <div class="blog__content__item__content__spread"></div> 1192 <div class="blog__content__item__content__info">` 1193 + tagsHTML + ` 1194 <span>` + article.post_time.substr(0, 10) + `</span> 1195 </div> 1196 </div> 1197 </div>` 1198 let list = $(".blog__content__div-" + getTagValue() + " .blog__content__item__wrapper")[0]; 1199 $(list).append(rawHTML); 1200 } 1201 1202 /** 1203 * è·åå½å tag çå¼ 1204 * @returns {jQuery} 1205 */ 1206 function getTagValue() { 1207 let el = $('input[name="tab-group"]:checked')[0]; 1208 return $(el).val(); 1209 } 1210 1211 /** 1212 * è·åå½åç±»åæç« çå·²æ¾ç¤ºæ°é 1213 * @returns {jQuery} 1214 */ 1215 function getPostCount() { 1216 let val = getTagValue(); 1217 let name = ".blog__content__div-" + val + " .blog__content__item"; 1218 return $(name).length; 1219 } 1220</script>
1220 1221</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.