STF Exchange
\n\n"; } function init(){ mount(); applyI18N(); renderCats(); renderList(); renderOrders(); renderBalance(); initHero(); renderHot(); try{ loadPositionsFor(null); }catch(e){} try{ loadRoundFor('BTC/USDT'); }catch(e){} } function start(){ stop(); // 单 timer:先清再起 state.view = state.view || 'trade'; state._timer = setInterval(pollCurrent, 3000); try{ pollCurrent(); }catch(e){} } function stop(){ if(state._timer){ clearInterval(state._timer); state._timer = null; } } // 独立语言切换:只改板块语言,不碰主站 CURRENT_LANG function setContractLang(l){ CONTRACT_LANG = blockFor(l); try{ localStorage.setItem('contract_lang', CONTRACT_LANG); }catch(e){} applyI18N(); } function getLang(){ return CONTRACT_LANG; } window.ContractSection = { init: init, start: start, stop: stop, setContractLang: setContractLang, getLang: getLang, t: t, ct: t, state: state, placeBet: placeBet, renderBalance: renderBalance, pollCurrent: pollCurrent, // 测试/诊断暴露 _funcs: ['blockFor','mainLang','normLang','t','applyI18N','ruleFor','apiToken','apiHeaders','apiSymbol','ensureAuth','authRequired','fetchCurrentRound','fetchPositions','apiOpenPosition','pollCurrent','allCoins','categories','renderCats','setCat','visibleCoins','renderList','toggleFav','backToMarket','openTrade','loadRoundFor','loadPositionsFor','renderDurChips','selectDuration','renderAmtChips','setAmt','tickPrice','updatePrice','initHero','applyHeroText','syncHeroFromRound','heroBet','updateHero','updateEst','genKL','drawKL','showResultModal','row','hideResultModal','placeBet','blockBets','startCountdown','durKeyOf','renderDurTick','settle','renderOrders','renderHot','fmtNum','renderBalance'] }; })();