1<!DOCTYPE html> 2<html lang='ru' xml:lang='ru' xmlns='http://www.w3.org/1999/xhtml'> 3<head> 4 <title>СпÑавоÑник ÑизиÑеÑÐºÐ¸Ñ Ð¿Ð°ÑамеÑÑов и велиÑин</title> 5 <base href="https://chipinfo.pro/" /> 6 <meta name="viewport" content="width=device-width, initial-scale=0.6" /> 7 <meta https-equiv="content-type" content="text/html; charset=utf-8" /> 8 <meta name="description" content="ÐаÑеÑÐ¸Ð°Ð»Ñ Ñаздела СпÑавоÑник ÑизиÑеÑÐºÐ¸Ñ Ð¿Ð°ÑамеÑÑов и велиÑин" /> 9 <meta name="keywords" content="ÑлекÑÑоника, ÑлекÑÑоÑÐµÑ Ð½Ð¸ÐºÐ°, компоненÑÑ, ÑлекÑÑоннÑе, база, ÑезиÑÑоÑÑ, конденÑаÑоÑÑ, ÑÑанзиÑÑоÑÑ, микÑоÑÑ ÐµÐ¼Ñ, ÑиÑиÑÑоÑÑ, диодÑ, ÑÑабилиÑÑонÑ, аналоги, ÑÑабилизаÑоÑÑ, микÑоконÑÑоллеÑÑ" /> 10 <meta property="og:title" content="ChipInfo" /> 11 <meta property="og:site_name" content="ChipInfo" /> 12 <meta property="og:description" content="The coolest electronics guide ChipInfo.pro" /> 13 <meta property="og:url" content="https://chipinfo.pro/"> 14 <meta property="og:type" content="website" /> 15 <meta name="yandex-tableau-widget" content="logo=https://chipinfo.pro/style/favicon.png, color=#f5f5f5" /> 16 <meta name="theme-color" content="#cccc"> 17 <meta name="csrf-token" content="PNCjRlMNCN3ockyKn8DeLRLsXqMWKR1VtFL6stAr"> 18 <link rel="stylesheet" href="https://chipinfo.pro/style/style.css" /> 19 <link rel="stylesheet" href="https://chipinfo.pro/style/components.css" /> 20 <link rel="shortcut icon" href="https://chipinfo.pro/style/favicon.ico" type="image/vnd.microsoft.icon" /> 21 <link rel="icon" href="https://chipinfo.pro/style/favicon.ico" type="image/vnd.microsoft.icon" /> 22 <link rel="icon" href="https://chipinfo.pro/style/favicon.svg" type="image/svg+xml"> 23 <link rel="manifest" href="https://chipinfo.pro/manifest.json" /> 24 <link rel="dns-prefetch" href="https://mc.yandex.ru"> 25 <link rel="dns-prefetch" href="https://an.yandex.ru"> 26 <link rel="dns-prefetch" href="https://site.yandex.net"> 27 <link rel="dns-prefetch" href="https://vk.com"> 28
28<script type="text/javascript" src="https://vk.com/js/api/openapi.js?122"></script>
28 29
29<script type="text/javascript" src="https://chipinfo.pro/core/vanicom.min.js"></script>
29 30
30<script type="text/javascript" src="https://chipinfo.pro/core/core.js"></script>
30 31
31<script type="text/javascript" src="https://chipinfo.pro/core/debounce.js"></script>
31 32
32<script type="text/javascript" src="https://mc.yandex.ru/metrika/watch.js" async></script>
32<!-- ÐеÑÑика --> 33
33<script type="text/javascript" src="https://an.yandex.ru/system/context.js" async></script>
33<!-- Реклама --> 34 35
35<script type="text/javascript"> 36 var csrf_token = 'PNCjRlMNCN3ockyKn8DeLRLsXqMWKR1VtFL6stAr'; 37 var appRoutes = { 38 base: 'https://chipinfo.pro/', 39 tags: { 40 materials: 'https://chipinfo.pro/api/tags/materials' 41 }, 42 auth: { 43 login: 'https://chipinfo.pro/login', 44 register: 'https://chipinfo.pro/register', 45 passwordEmail: 'https://chipinfo.pro/password/email', 46 passwordReset: 'https://chipinfo.pro/password/reset' 47 }, 48 }; 49 50 var ads_row_id = null; 51 var ya_block_id = null; 52 var warningBlockStyles = { display: 'block', position: 'fixed', width: '100%', left: '0px', bottom: '0px', zIndex: '1000', background: '#0d5c88', color: '#fff' }; 53 var warningInnerStyles = { width: '100%', padding: '10px 0', margin: '0 auto', textAlign: 'center', fontSize: '70%' }; 54 var adsBlockCommonStyles = { color: '#9A9A9A', margin: '0px auto', overflow: 'hidden' }; 55 var adsRowCommonStyles = { margin: '0px auto', display: 'flex', flexDirection: 'column', alignContent: 'center' }; 56 57 var getMainBlock = () => document.getElementsByClassName('main-content-container')[0]; 58 59 function loadAds(idForRender) { 60 window["yandexContextAsyncCallbacks"] = window["yandexContextAsyncCallbacks"] || []; 61 window["yandexContextAsyncCallbacks"].push(function() { 62 if ( window.innerWidth < 1000 ) { 63 Ya.Context.AdvManager.render({ blockId: "R-A-257534-2", renderTo: idForRender, async: true }); 64 } else if ( window.innerWidth < 1700 ) { 65 Ya.Context.AdvManager.render({ blockId: "R-A-257534-1", renderTo: idForRender, async: true }); 66 } else { 67 Ya.Context.AdvManager.render({ blockId: "R-A-257534-3", renderTo: idForRender, async: true }); 68 } 69 }); 70 }; 71 72 function appendStyles(node, stylesObj){ 73 var rulesToAppend = Object.keys(stylesObj); 74 forEach(rulesToAppend, (rule) => { 75 node.style[rule] = stylesObj[rule]; 76 }); 77 return node; 78 }; 79 80 function createAdsBlock(){ 81 if (ads_row_id) { 82 var adsNodeToDelete = document.getElementById(ads_row_id); 83 getMainBlock().removeChild(adsNodeToDelete); 84 } 85 var ya_block = document.createElement("div"); 86 var ads_block = appendStyles(document.createElement("div"), adsBlockCommonStyles); 87 var ads_row = appendStyles(document.createElement("div"), adsRowCommonStyles); 88 89 ya_block.id = getRandomString(10); 90 ads_row.id = getRandomString(10); 91 ads_row_id = ads_row.id; 92 ya_block_id = ya_block.id; 93 94 if ( main_width() <= 860 ){ 95 ads_row = appendStyles( 96 ads_row, { minWidth: '300px', maxWidth: '660px', margin: '0 20px', marginBottom: '50px', fontSize: '60%', wordBreak: 'break-all' } 97 ); 98 } else if ( main_width() <= 1400 ){ 99 ads_row = appendStyles(ads_row, { minWidth: '800px', maxWidth: '1000px', padding: '20px' }); 100 } else if ( main_width() <= 1760 ){ 101 ads_row = appendStyles(ads_row, { minWidth: '900px', maxWidth: '1100px', padding: '20px' }); 102 } else { 103 ads_row = appendStyles( 104 ads_row, { maxWidth: '240px', height: '75vh', position: 'fixed', left: (((main_width() - 1200)/2) - 254)/2 + 'px', bottom: '50px', justifyContent: 'end' } 105 ); 106 } 107 108 ads_block.appendChild(ya_block); 109 ads_row.appendChild(ads_block); 110 getMainBlock().appendChild(ads_row); 111 loadAds(ya_block_id); 112 }; 113 114 function createWarnBlock(innerText){ 115 var warning = appendStyles(document.createElement("div"), warningBlockStyles); 116 var warning_inner = appendStyles(document.createElement("div"), warningInnerStyles); 117 warning_inner.innerHTML = innerText; 118 warning.appendChild(warning_inner); 119 return warning; 120 }; 121 122 function initCopyButtons() { 123 var copyButtons = document.getElementsByClassName('copy-btn'); 124 if (copyButtons.length>0){ 125 console.log("CopyButtons found. Set their events."); 126 for (var i = 0; i < copyButtons.length; i++) { 127 copyButtons[i].addEventListener('click', function(eve) { 128 var eventTarget = getEventTarget(eve); 129 // УÑÑановка аÑÑибÑÑа ÑеÑез JS copyBtn.dataset.target = 'ID-ЦÐÐÐ' 130 // УÑÑановка аÑÑибÑÑа ÑеÑез HTML <span data-target="ID-ЦÐÐÐ"> 131 var copyTarget = document.getElementById(eventTarget.getAttribute('data-target')); 132 // createRange - func from Document Object Model Range, support most browsers beginning with IE9 133 var range = document.createRange(copyTarget); 134 // Select 135 range.selectNode(copyTarget); 136 window.getSelection().addRange(range); 137 try { // Try copy 138 var msg = 'unsuccessful'; 139 if (document.queryCommandSupported('copy')) { 140 // document.queryCommandSupported('copy') - ÑÑÑ Ð¿ÑовеÑÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ пÑопÑÑÑиÑÑ, Ñ.к. ÑÑо одна из ÑамÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаемÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ 141 var successful = document.execCommand('copy'); 142 var msg = successful ? 'success' : msg; 143 } 144 console.log('Copy target was ' + msg); 145 } catch(err) { console.error('Oops, unable to copy'); } 146 // Deselect 147 window.getSelection().removeAllRanges(); 148 }); 149 } 150 } 151 } 152 153 document.addEventListener('DOMContentLoaded', function(){ 154 if (getCookie('siteTheme') === 'dark' || getLocalItem('theme') === 'dark') { 155 var themeSelector = document.getElementById('theme-selector'); 156 if (themeSelector) { // ÐÑÑÑ ÑÑÑаниÑÑ Ð½Ð° коÑоÑÑÑ Ð½ÐµÑ Ð¿Ð¾Ð´Ð²Ð°Ð»Ð°, напÑÐ¸Ð¼ÐµÑ 404-Ñ 157 themeSelector.getElementsByClassName('custom-radio')[0].classList.toggle('checked'); 158 } 159 setTheme('dark'); 160 } else { 161 setTheme('light'); 162 } 163 164 window.onscroll = function(){ 165 var o = window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop; 166 if ( o === null || o < 450 ) { document.getElementById("arrow-to-top").style.visibility = "hidden"; } 167 else { document.getElementById("arrow-to-top").style.visibility="visible"; } 168 }; 169 170 }); 171 172 // ÐкÑивиÑÑеÑÑÑ Ð¿Ð¾Ñле полной загÑÑзки ÑÑÑаниÑÑ, вклÑÑÐ°Ñ Ð²Ñе завиÑимоÑÑи, Ñакие как изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ ÑÑили 173 window.onload = function(){ 174 initCopyButtons(); 175 176 var tabsBlocks = document.getElementsByClassName('tabs-container'); 177 if (tabsBlocks.length>0){ 178 console.log("Tabs conteiners found. Initiate."); 179 for (var i = 0; i < tabsBlocks.length; i++) { 180 var tabLinks = tabsBlocks[i].getElementsByClassName('tab-label'); 181 for (var ii = 0; ii < tabLinks.length; ii++) { 182 tabLinks[ii].addEventListener('click', function() { 183 tabsHandler(this, tabsBlocks[i]); 184 }); 185 } 186 } 187 } 188 189 var foldingLists = document.getElementsByClassName('folding-list-control'); 190 if (foldingLists.length>0){ 191 console.log("Folding lists found. Initiate."); 192 for (var i = 0; i < foldingLists.length; i++) { 193 foldingLists[i].addEventListener('click', function() { 194 interfaceHandlers.foldingListHandler(this, foldingLists[i]); 195 }); 196 } 197 } 198 199 var spoilersBlocks = document.getElementsByClassName('spoiler'); 200 if (spoilersBlocks.length>0){ 201 console.log("Folding lists found. Initiate."); 202 for (var i = 0; i < spoilersBlocks.length; i++) { 203 spoilersBlocks[i].addEventListener('click', function() { 204 interfaceHandlers.spoilersHandler(this, spoilersBlocks[i]); 205 }); 206 } 207 } 208 209 var multiselectBlocks = document.querySelectorAll(".multiselect_block"); 210 multiselectBlocks.forEach(parent => { 211 let label = parent.querySelector(".multiselect_box_label"); 212 let select = parent.querySelector(".multiselect_field"); 213 let text = label.innerHTML; 214 select.addEventListener("change", function(element) { 215 let selectedOptions = this.selectedOptions; 216 label.innerHTML = ""; 217 for (let option of selectedOptions) { 218 let button = document.createElement("button"); 219 button.type = "button"; 220 button.className = "btn_multiselect"; 221 button.textContent = option.value; 222 button.onclick = () => { 223 option.selected = false;
224 button.remove(); 225 if (!select.selectedOptions.length) label.innerHTML = text 226 }; 227 label.append(button); 228 } 229 }) 230 }) 231 232 var currentURL = document.location.href; 233 if (currentURL && (typeof(window) !== 'undefined') && currentURL.includes('#')) { 234 currentURL = currentURL.split('#')[0]; 235 window.history.replaceState({}, document.title, currentURL); 236 } 237 238 createAdsBlock(); 239 240 window.addEventListener('resize', debounce(createAdsBlock, 800, { 'debounceMaxWait': 1500 })); 241 }; 242</script>
242 243</head> 244<body> <div id="main-menu-background"> 245<div id="main-menu-block" class="no-select"> 246<div id="menu-items-container"> 247 <li class="menu-item icon"><a href="/" id="main-menu-homelink"><div class="main-menu-linkpics"> </div></a></li> 248 <li class="menu-item icon"><a href="/progs" id="main-menu-calclink"><div class="main-menu-linkpics"> </div></a></li> 249 <li class="menu-item icon"> 250 <a onclick="modalHandler('auth-modal');" id="main-menu-userlink"><div class="main-menu-linkpics"> </div></a> 251 </li> 252 <li class="menu-item"><a href="articles">Articles</a></li> 253 <li class="menu-item" onclick="menuHandler(event);"><a>Reference materials</a> 254 <ul class="main-lowmenu"> 255 <li><a href="infos/materials">ÐаÑамеÑÑÑ Ð¼Ð°ÑеÑиалов</a></li> 256 <li><a href="infos/physics">СпÑавоÑник ÑизиÑеÑÐºÐ¸Ñ Ð¿Ð°ÑамеÑÑов и велиÑин</a></li> 257 <li><a href="infos/protocols">ÐпиÑÐ°Ð½Ð¸Ñ Ð¿ÑоÑоколов</a></li> 258 <li><a href="infos/standards">СÑандаÑÑÑ</a></li> 259 <li><a href="infos/treatment">ХимиÑеÑÐºÐ°Ñ Ð¾Ð±ÑабоÑка повеÑÑ Ð½Ð¾ÑÑей</a></li> 260 <li><a href="infos/antennas">ÐнÑÐµÐ½Ð½Ñ Ð¸ ÑадиопеÑедаÑÑие ÑÑÑÑойÑÑва</a></li> 261 <li><a href="infos/electronics_design">ÐонÑÑÑÑиÑование ÑадиоÑлекÑÑоники</a></li> 262 <li><a href="books">Books</a></li> 263 </ul> 264 </li> 265 <li class="menu-item"><a href="schematic">Schematic</a></li> 266 <li class="menu-item" onclick="menuHandler(event);"><a>Radiocomponents</a> 267 <ul class="main-lowmenu"> 268 <li><a href="elements/acoustic">ÐкÑÑÑиÑеÑкие компоненÑÑ 269</a></li> 270 <li><a href="elements/capacitor">ÐонденÑаÑоÑÑ</a></li> 271 <li><a href="elements/vacuum_tube">РадиолампÑ</a></li> 272 <li><a href="elements/chip">ÐикÑоÑÑ ÐµÐ¼Ñ</a></li> 273 <li><a href="elements/resonator">РезонаÑоÑÑ</a></li> 274 <li><a href="elements/battery">ÐккÑмÑлÑÑоÑÑ</a></li> 275 <li><a href="elements/mcu">ÐикÑоконÑÑоллеÑÑ</a></li> 276 <li><a href="elements/transistor">ТÑанзиÑÑоÑÑ</a></li> 277 <li><a href="elements/diode">ÐиодÑ</a></li> 278 <li><a href="elements/rezistor">РезиÑÑоÑÑ</a></li> 279 </ul> 280 </li> 281</div> 282 283<div id="search-container"> 284 <div 285 class="ya-site-form ya-site-form_inited_no" 286 data-bem="{"action":"https://chipinfo.pro/find","arrow":false,"bg":"transparent","fontsize":14,"fg":"#000000","language":"ru","logo":"rb","publicname":"ÐоиÑк по ChipInfo.pro","suggest":false,"target":"_self","tld":"ru","type":3,"usebigdictionary":false,"searchid":2018356,"input_fg":"#000000","input_bg":"#dfdfdf","input_placeholder":"поиÑк по ÑайÑÑ...","input_placeholderColor":"#999999","input_borderColor":"#666666"}"> 287 <form action="https://yandex.ru/search/site/" method="get" target="_self" accept-charset="utf-8"> 288 <input type="hidden" name="searchid" value="2018356"/> 289 <input type="hidden" name="l10n" value="ru"/> 290 <input type="hidden" name="reqenc" value="utf-8"/> 291 <input type="search" name="text" value=""/> 292 <input type="submit" value="ÐайÑи"/> 293 </form> 294 </div> 295
295<script type="text/javascript">(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0],e=d.documentElement;if((' '+e.className+' ').indexOf(' ya-page_js_yes ')===-1){e.className+=' ya-page_js_yes';}s.type='text/javascript';s.async=true;s.charset='utf-8';s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);(w[c]||(w[c]=[])).push(function(){Ya.Site.Form.init()})})(window,document,'yandex_site_callbacks');</script>
295 296</div> 297 298 299<div id="main-menu-mobile-icon" onclick="document.getElementById('menu-items-container').classList.toggle('mobile-show');"><span >≡</span></div> 300</div> 301 302</div> 303 304 <div class="main-content-container"> 305 <div id="content-center-column"> 306 <div class="post"> 307 <h3>СпÑавоÑник ÑизиÑеÑÐºÐ¸Ñ Ð¿Ð°ÑамеÑÑов и велиÑин</h3> 308 <hr size="1px"/> 309 <a href="infos/physics/light_wavelength">ЦвеÑа и Ð´Ð»Ð¸Ð½Ñ Ð²Ð¾Ð»Ð½ в опÑике</a><br/> 310 <a href="infos/physics/aerodynamic_resistance_at_high_altitudes">ÐÑÑодинамиÑеÑкое ÑопÑоÑивление аÑмоÑÑеÑÑ Ð½Ð° болÑÑÐ¸Ñ Ð²ÑÑоÑÐ°Ñ </a><br/> 311 <a href="infos/physics/materials_transparency">ÐÑозÑаÑноÑÑÑ ÑазлиÑнÑÑ Ð¼Ð°ÑеÑиалов</a><br/> 312 <a href="infos/physics/atmospheric_density">ÐлоÑноÑÑÑ Ð°ÑмоÑÑеÑÑ Ð½Ð° ÑазнÑÑ Ð²ÑÑоÑÐ°Ñ </a><br/> 313 <a href="infos/physics/pressure_vs_altitude">Ðавление на ÑазнÑÑ Ð²ÑÑоÑÐ°Ñ Ð² аÑмоÑÑеÑе</a><br/> 314 <a href="infos/physics/_dry_air_physical_params">ФизиÑеÑкие паÑамеÑÑÑ ÑÑÑ Ð¾Ð³Ð¾ воздÑÑ Ð°</a><br/> 315 </div> 316 <br/><br/> 317 </div> 318</div> 319 320 <div id="auth-modal" class="modal-container"> 321 <div class="modal-body"> 322 <div class="tabs-container"> 323 <div class="tab-header"> 324 <div class="tab-label active"><a name="login-tab">ÐÑ Ð¾Ð´</a></div> 325 </div> 326 <div class="tab active login-tab"> 327 <div id="loginForm"> 328 <div class="common-loginForm-errors error-div"></div> 329 <input type="hidden" name="_token" value="PNCjRlMNCN3ockyKn8DeLRLsXqMWKR1VtFL6stAr"> <div class="controls-row"> 330 <label for="username">ÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ <span class="hint">(username)</span></label> 331 <div class="half-column"> 332 <input type="text" class="form-control " name="username" value="" required autocomplete="username" autofocus> 333 <div class="username-loginForm-errors error-div"></div> 334 </div> 335 </div> 336 <div class="controls-row"> 337 <label for="password">Password</label> 338 <div class="half-column"> 339 <input type="password" class="form-control " name="password" required autocomplete="current-password"> 340 <div class="password-loginForm-errors error-div"></div> 341 </div> 342 </div> 343 <div class="controls-row"> 344 <div class="half-column"> 345 <div class="form-check"> 346 <input class="form-check-input" type="checkbox" name="remember"> 347 <label class="form-check-label" for="remember">ÐапомниÑÑ ÑеÑÑиÑ</label> 348 </div> 349 </div> 350 </div> 351 <div class="controls-row"> 352 <button onclick="formValidation('loginForm')" class="btn btn-primary">ÐойÑи</button> 353 <a class="btn btn-link" href="https://chipinfo.pro/password/reset">ÐабÑли паÑолÑ?</a> 354 </div> 355 </div> 356 </div> 357 358 359 <div class="shared-captcha-block" id="shared-captcha-block"> 360 <h3>ÐÑовеÑка</h3> 361 <div class="controls-row captcha-row"> 362 <div class="half-column"> 363 <div class="captcha-block"> 364 <img src="" alt="captcha" class="captcha-image" id="shared-captcha-img" data-loading="true"> 365 <button type="button" class="captcha-refresh" id="shared-captcha-refresh" title="ÐбновиÑÑ">↻</button> 366 </div> 367 </div> 368 <div class="half-column" style="flex-direction: column;"> 369 <div class="captcha-status" id="shared-captcha-status"></div> 370 <input type="text" class="form-control captcha-input" id="shared-captcha-input" name="captcha" required autocomplete="off" maxlength="6" placeholder="XXXXXX" style="text-transform: uppercase;"> 371 <div class="captcha-errors error-div" id="shared-captcha-errors"></div> 372 </div> 373 </div> 374 </div> 375 </div> 376 </div> 377</div>
378<script> 379(function() { 380 var captchaToken = '411a2b6e15586d54952c3587d68efcf3'; 381 var captchaUrl = 'https://chipinfo.pro/captcha'; 382 var refreshCooldown = null; 383 384 function setCaptchaStatus(text, isError) { 385 var status = document.getElementById('shared-captcha-status'); 386 if (status) { 387 status.innerText = text || ''; 388 status.className = 'captcha-status' + (isError ? ' error' : ''); 389 } 390 } 391 392 function setRefreshDisabled(disabled, countdown) { 393 var btn = document.getElementById('shared-captcha-refresh'); 394 if (btn) { 395 btn.disabled = disabled; 396 if (countdown && countdown > 0) { 397 btn.innerText = countdown; 398 } else { 399 btn.innerHTML = '↻'; 400 } 401 } 402 } 403 404 function startCooldown(seconds) { 405 if (refreshCooldown) { 406 clearInterval(refreshCooldown); 407 } 408 409 var remaining = seconds; 410 setRefreshDisabled(true, remaining); 411 setCaptchaStatus('Ðбновление ÑеÑез ' + remaining + ' Ñек.', false); 412 413 refreshCooldown = setInterval(function() { 414 remaining--; 415 if (remaining <= 0) { 416 clearInterval(refreshCooldown); 417 refreshCooldown = null; 418 setRefreshDisabled(false, 0); 419 setCaptchaStatus('', false); 420 } else { 421 setRefreshDisabled(true, remaining); 422 setCaptchaStatus('Ðбновление ÑеÑез ' + remaining + ' Ñек.', false); 423 } 424 }, 1000); 425 } 426 427 // force - пÑинÑдиÑелÑное обновление (ÑбÑаÑÑÐ²Ð°ÐµÑ cooldown) 428 window.refreshSharedCaptcha = function(force) { 429 var img = document.getElementById('shared-captcha-img'); 430 if (!img) return; 431 432 // ÐÑи пÑинÑдиÑелÑном обновлении ÑбÑаÑÑваем cooldown 433 if (force && refreshCooldown) { 434 clearInterval(refreshCooldown); 435 refreshCooldown = null; 436 setRefreshDisabled(false, 0); 437 } 438 439 if (refreshCooldown) return; 440 441 setCaptchaStatus('ÐагÑÑзка...', false); 442 443 var xhr = new XMLHttpRequest(); 444 xhr.open('GET', captchaUrl + '?token=' + encodeURIComponent(captchaToken) + '&_=' + Date.now(), true); 445 xhr.responseType = 'blob'; 446 xhr.withCredentials = true; 447 448 xhr.onload = function() { 449 if (xhr.status === 200) { 450 var blob = xhr.response; 451 img.src = URL.createObjectURL(blob); 452 img.removeAttribute('data-loading'); 453 setCaptchaStatus('', false); 454 // ÐоÑле ÑÑпеÑной загÑÑзки запÑÑкаем cooldown 455 startCooldown(15); 456 } else if (xhr.status === 429) { 457 // Rate limit 458 try { 459 var reader = new FileReader(); 460 reader.onload = function() { 461 var json = JSON.parse(reader.result); 462 startCooldown(json.wait || 30); 463 }; 464 reader.readAsText(xhr.response); 465 } catch (e) { 466 startCooldown(15); 467 } 468 } else if (xhr.status === 403) { 469 setCaptchaStatus('ÐÑибка Ñокена. ÐеÑезагÑÑзиÑе ÑÑÑаниÑÑ.', true); 470 } else { 471 setCaptchaStatus('ÐÑибка загÑÑзки', true); 472 } 473 }; 474 475 xhr.onerror = function() { 476 setCaptchaStatus('ÐÑибка ÑеÑи', true); 477 }; 478 479 xhr.send(); 480 }; 481 482 // ÐбÑабоÑÑик Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ð¿Ñи 483 document.getElementById('shared-captcha-refresh').addEventListener('click', function() { 484 refreshSharedCaptcha(false); 485 }); 486 487 // ÐагÑÑжаем капÑÑ ÑÑÐ°Ð·Ñ 488 setTimeout(function() { 489 refreshSharedCaptcha(false); 490 }, 100); 491})(); 492 493var formValidation = function(form_type) { 494 var form_block = document.getElementById(form_type); 495 var inputs_to_validate = form_block.getElementsByTagName('input'); 496 var data_to_send = {}; 497 498 for (var i = 0; i < inputs_to_validate.length; i++) { 499 if (inputs_to_validate[i].type === 'checkbox') { 500 data_to_send[inputs_to_validate[i].name] = inputs_to_validate[i].checked; 501 } else { 502 var value = inputs_to_validate[i].value; 503 if (inputs_to_validate[i].name === 'captcha') { 504 value = value.toUpperCase(); 505 } 506 data_to_send[inputs_to_validate[i].name] = value; 507 } 508 } 509 510 // ÐобавлÑем знаÑение капÑи из обÑего Ð¿Ð¾Ð»Ñ 511 var sharedCaptchaInput = document.getElementById('shared-captcha-input'); 512 if (sharedCaptchaInput) { 513 data_to_send['captcha'] = sharedCaptchaInput.value.toUpperCase(); 514 } 515 516 // ÐбнÑлÑем ÑÑаÑÑе оÑибки 517 var errors_divs = form_block.getElementsByClassName('error-div'); 518 for (var i = 0; i < errors_divs.length; i++) { errors_divs[i].innerHTML = ''; } 519 // ÐÑиÑаем оÑибки капÑи 520 var captchaErrors = document.getElementById('shared-captcha-errors'); 521 if (captchaErrors) captchaErrors.innerHTML = ''; 522 523 var authUrlMap = { 524 'login': appRoutes.auth.login, 525 'register': appRoutes.auth.register, 526 'password/email': appRoutes.auth.passwordEmail, 527 'password/reset': appRoutes.auth.passwordReset 528 }; 529
530 makeRequest({ 531 url: authUrlMap[form_type] || (appRoutes.base + form_type), 532 type: 'POST', 533 callback: function (response) { 534 var res = responseHandler(response); 535 if (!res.success) { // оÑибки 536 // ÐÑиÑаем поле капÑи 537 var captchaInput = document.getElementById('shared-captcha-input'); 538 if (captchaInput) { captchaInput.value = ''; } 539 540 // ÐÑинÑдиÑелÑно обновлÑем капÑÑ (код в ÑеÑÑии Ñже ÑбÑоÑен пÑи валидаÑии) 541 refreshSharedCaptcha(true); 542 543 forEach(Object.keys(res.data), function(key){ 544 var new_error = document.createElement('div'); 545 new_error.innerText = res.data[key]; 546 547 // ÐÑибки капÑи показÑваем в оÑделÑном блоке 548 if (key === 'captcha') { 549 var captchaErrors = document.getElementById('shared-captcha-errors'); 550 if (captchaErrors) { 551 captchaErrors.appendChild(new_error); 552 } 553 } else { 554 var errorContainer = form_block.getElementsByClassName(key+'-'+form_type+'-errors')[0]; 555 if (!errorContainer) { 556 errorContainer = form_block.getElementsByClassName('common-'+form_type+'-errors')[0]; 557 } 558 if (errorContainer) { 559 errorContainer.appendChild(new_error); 560 } 561 } 562 }); 563 } else { 564 if (form_type === 'registerForm') { 565 window.location = 'messages/successRegister'; 566 } else { 567 window.location = '/'; 568 } 569 } 570 }, 571 data: JSON.stringify(data_to_send) 572 }); 573} 574</script>
574 575 576 <div id="footer"> 577 <div id="footer-container"> 578 <div id="footer-contacts"> 579 <a href="mailto:contact@chipinfo.pro"><span class="social-icons mail-icon">@</span> E-mail</a> 580 <a href="https://t.me/electrochatic" alt="Ð§Ð°Ñ ChipInfo.pro в Telergam"><span class="social-icons telegram-icon"> </span> Telegram</a> 581 </div> 582 <div class="radio-container" id="theme-selector" >Theme: <div class="custom-radio" onclick="changeThemeHandler(this, 'changeTheme');"> 583 <div class="radio-on-title">Light</div> 584 <div class="radio-state-marker no-select"><div class="radio-punkt"> </div></div> 585 <div class="radio-off-title">Dark</div> 586</div> 587</div> 588</div> 589 590<br/><br/> 591 592<!-- Metrika -->
593<script type="text/javascript"> 594(function(w,c) { 595 (w[c] = w[c] || []).push(function() { 596 try { w.yaCounter19901995 = new Ya.Metrika({ id:19901995, webvisor:true, clickmap:true, trackLinks:true, accurateTrackBounce:false }); } catch(e) { } 597 }); })(window, "yandex_metrika_callbacks"); 598</script>
598 599<noscript><div><img src="//mc.yandex.ru/watch/19901995" style="position:absolute; left:-9999px;" alt="" /></div></noscript> 600<!-- Metrika --> 601</div> 602 603<div id="arrow-to-top" class="no-select" onclick="window.scrollTo({ top:0, behavior:'smooth' });"> ˆ </div> 604</body> 605</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.